Qodana 2024.1 ヘルプ

.NET 用 Qodana

official project

Qodana for .NET linter languages

Qodana for .NET は Rider に基づいており、.NET プロジェクトの静的分析を提供します。Rider のすべての機能が組み込まれており、次のことに役立ちます。

  • 異常なコードと考えられるバグを検出

  • デッドコードを削除する

  • スペルの問題をハイライトする

  • 全体的なコード構造を改善する

  • コーディングのベストプラクティスを紹介する

  • インスペクションの結果を Qodana クラウドにアップロードする

Qodana for .NET は、C、C++、C#、VB.NET、JavaScript、TypeScript プログラミング言語用のインスペクションを提供します。C および C++ Qodana for .NET のインスペクションは、.sln ソリューションファイルまたは .csproj プロジェクトファイルを含むプロジェクトによって制限されます。

バージョン 2023.3 以降では、.NET フレームワークベースのプロジェクト分析の機能が Qodana のネイティブモードで利用できるようになります。

サポートされているテクノロジー

Qodana for .NET は、次のテクノロジにインスペクションを提供します。

プログラミング言語

C#

C

C++

JavaScript

TypeScript

VB.NET

マークアップ言語

CSS

HTML

JSON および JSON5

RELAX NG

T4

XML

XPath

XSLT

YAML

スクリプト言語

シェルスクリプト

データベースと ORM

MongoDB

MySQL

Oracle

PostgreSQL

SQL

SQL サーバー

ビルド管理

MS ビルド

フレームワークおよびライブラリ

.NET フレームワーク

.NET Core

Handlebars/Mustache

Less

Node.JS

NUnit

Pug/Jade

Sass/SCSS

Unity

Unreal Engine

Vue

Xunit

ここで、C および C++ インスペクションは、.sln ファイルを含むプロジェクトに適用されます。

サポートされている機能

Qodana for .NET リンターは、次の Qodana 機能を提供します。

フィーチャー

ライセンスに基づいて利用可能

ベースライン

Ultimate と Ultimate Plus

コードカバレッジ

Ultimate と Ultimate Plus

クオリティゲート

Ultimate と Ultimate Plus

ライセンス監査

Ultimate Plus

プロジェクトをローカルで分析する

プロジェクトの依存関係をインストールする (ノンネイティブモード)

Qodana for .NET は .NET プロジェクトの分析に適しており、このリンターの Dockerized バージョンでは次の SDK バージョンが提供されます。

  • 6.0.417

  • 7.0.404

  • 8.0.100

すべての SDK バージョンは、Qodana for .NET コンテナーファイルシステムの /usr/share/dotnet/sdk ディレクトリに保存されます。

プロジェクトで異なるバージョンの SDK が必要な場合は、分析を実行する前に、qodana.yaml ファイルの bootstrap キーを使用して設定できます。例: このコマンドは、global.json ファイルで指定され、プロジェクトのルートにある必要なバージョンの SDK をインストールします。

bootstrap: curl -fsSL https://dot.net/v1/dotnet-install.sh | bash -s -- --jsonfile /data/project/global.json -i /usr/share/dotnet

プロジェクトのビルド

Qodana を使用してインスペクションする前にプロジェクトをビルドします。プロジェクトディレクトリに含まれる qodana.yaml ファイルの bootstrap キーを使用してこれを実行できます。

Qodana の設定

Qodana のバージョン 2023.3 以降、Qodana for .NET リンターを実行するにはネイティブモードが推奨される方法です。プロジェクトをビルドするのと同じマシンでネイティブモードを実行することをお勧めします。これにより、Qodana がプライベート NuGet フィードにアクセスできることが保証されます。

解決策を指定する

デフォルトでは、Qodana は単一のソリューションファイルを見つけて使用しようとします。ソリューションファイルが存在しない場合は、プロジェクトファイルを見つけようとします。プロジェクトに複数のソリューションファイルが含まれている場合は、--solution オプションとソリューションファイルへの相対パスを使用して正確なファイル名を指定する必要があります。例: Qodana が常に MySolution.sln ソリューションファイルを分析するようにするには、次を使用できます。

--property=qodana.net.solution=MySolution.sln

あるいは、solution オプションとソリューションファイルへの相対パスを使用して、 qodana.yaml ファイルでソリューションファイル名を指定することもできます。

dotnet: solution: MySolution.sln

プロジェクトにソリューションファイルが含まれておらず、複数のプロジェクトファイルが含まれている場合は、--project オプションとプロジェクトファイルへの相対パスを使用する必要があります。例: MyProject.csproj プロジェクトファイルの場合、次を使用できます。

--property=qodana.net.project=MyProject.csproj

あるいは、project オプションを使用して、 qodana.yaml ファイルでプロジェクトファイル名を指定することもできます。

dotnet: project: MyProject.csproj
ソリューションを構成する

ソリューション構成は、ソリューション内のどのプロジェクトをビルドするか、およびソリューション内の特定のプロジェクトにどのプロジェクト構成を使用するかを定義します。

新しく作成された各ソリューションには Debug 構成と Release 構成が含まれており、カスタム構成で補完できます。

--property 構成オプションを使用して、現在のソリューションの構成を切り替えることができます。例: これを使用して Release 構成に切り替えます。

--property=qodana.net.configuration=Release

あるいは、qodana.yaml で構成を指定することもできます。

dotnet: configuration: Release

デフォルトでは、ソリューションプラットフォームは Any CPU に設定されています。--property オプションを使用してこれをオーバーライドできます。

--property=qodana.net.platform=x86

あるいは、qodana.yaml でプラットフォームを指定することもできます。

dotnet: platform: x86

Roslyn アナライザー

.NET プロジェクトには、個別のインスペクションとして Roslyn アナライザーがあり、EditorConfig ファイルを使用して構成できます。これらを無効にするには、qodana.yaml ファイルを使用して Qodana プロファイルを構成します。例:

name: "Custom profile" baseProfile: qodana.starter groups: # List of configured groups - groupId: InspectionsToExclude groups: - "category:C#/Roslyn Analyzers" inspections: # Group invocation - group: InspectionsToExclude enabled: false # Disable the InspectionsToExclude group

別の構成例は GitHub (英語) で入手できます。

Qodana の実行

Qodana CLI(英語) はネイティブモードで実行できます。これは、Qodana for .NET リンターに推奨される方法です。あるいは、「Docker イメージ」タブから Docker コマンドを使用することもできます。

すでにマシンに Qodana CLI がインストールされて(英語)おり、このセクションの推奨事項に従っていることを前提として、プロジェクトのルートディレクトリで次のコマンドを実行できます。

qodana scan \    --ide QDNET

ここで、--ide オプションは JetBrains IDE バイナリファイルをダウンロードして使用します。

あるいは、qodana.yaml ファイルに ide: QDNET 構成を保存し、次のコマンドを使用して Qodana を実行することもできます。

qodana scan

プライベート NuGet フィードを使用する予定の場合は、プロジェクトをビルドするのと同じマシンでネイティブモードを実行することをお勧めします。これにより、Qodana がプライベート NuGet フィードにアクセスできることが保証されます。

まず、Docker Hub からイメージをプルします (最新バージョンを取得する場合にのみ必要です)。

docker pull jetbrains/qodana-dotnet:2024.1

source-directory がプロジェクトのルートを指し、QODANA_TOKENプロジェクトトークンを参照して、ローカル分析を開始します。

docker run \    -v <source-directory>/:/data/project/ \    -e QODANA_TOKEN="<cloud-project-token>" \    jetbrains/qodana-dotnet:2024.1 \    --show-report

インスペクションの結果を調べるには、ブラウザーで Qodana クラウド(英語)を開きます。

プライベート NuGet フィードを使用して、.NET 用の Qodana を実行できます。

docker run \    -v <source-directory>/:/data/project/ \    -e QODANA_TOKEN="<cloud-project-token>" \    -e QODANA_NUGET_URL=<private-NuGet-feed-URL> \    -e QODANA_NUGET_USER=<login> \    -e QODANA_NUGET_PASSWORD=<plaintext-password> \    -e QODANA_NUGET_NAME=<name-of-private-NuGet-feed> \    jetbrains/qodana-dotnet:2024.1 \    --show-report

プライベート NuGet フィードを使用するための構成例は、GitHub(英語) Web サイトで入手できます。

プルリクエストを分析する

マージやプルリクエストなどの変更セットに対して増分分析を実行できます。

たとえば、特定のコミット内での作業を終了し、変更を分析したい場合は、--diff-start オプションを使用できます。

qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    --diff-start=<GIT_START_HASH>
docker run \    -v $(pwd):/data/project/ \    -e QODANA_TOKEN="<cloud-project-token>" \    jetbrains/qodana-dotnet:2024.1 \    --diff-start=<GIT_START_HASH>

2 つのコミット間の変更セットをインスペクションするには、--diff-start--diff-end の両方のオプションを使用します。

qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    --diff-start=<GIT_START_HASH> \    --diff-end=<GIT_END_HASH>
docker run \    -v $(pwd):/data/project/ \    -e QODANA_TOKEN="<cloud-project-token>" \    jetbrains/qodana-dotnet:2024.1 \    --diff-start=<GIT_START_HASH> \    --diff-end=<GIT_END_HASH>

次のステップ

関連ページ:

Qodana クラウド

Qodana を複数のプロジェクトまたはリポジトリで実行する場合、特にコードベースが複数のサーバーと仮想プライベートネットワークに分散されていて、各チームが独立して作業している場合は、すべての分析レポートを 1 か所に読み込んで集約すると便利です。このような場合、すべての Qodana インスタンスからレポート情報を収集して表示するための集中型ソリューションが役立ちます。Qodana クラウドは、さまざまな Qodana レポートを蓄積し、プロジェクトの進捗状況を一元的に追跡するのに役立つクラウ...

ネイティブモード

デフォルトでは、Qodana は Linux イメージに基づいて Docker を使用してリンターを実行します。特定のケースでは、プライベートパッケージを処理するか、Docker の不完全なサポートを提供するオペレーティングシステム上で Qodana を実行する必要があります。これを克服するために、Qodana は .NET 用 Qodana リンターのネイティブモードをサポートしています。この場合、Qodana は実行環境を再利用するため、プロジェクトのビルドに使用するのとまったく同じ環境で Qo...

ベースライン

ベースラインは、特定の Qodana 実行時に取得され、ファイルに含まれているコードベースの問題のスナップショットです。ベースライン機能を使用すると、現在のコードとベースラインの状態を比較し、新しい問題、変更されていない問題、解決された問題を確認できます。この機能は、Community、Ultimate、Ultimate Plus ライセンスとその試用版で利用可能なすべてのリンターでサポートされています。使い方:ベースラインなしで Qodana を実行すると、現在の実行時に検出された問題を確認...

コードカバレッジ

コードカバレッジは、生成されたレポートを使用して、メソッド、クラス、ファイル内の全体的なコードカバレッジを計算します。また、これらのエンティティにおけるカバレッジの不足に関連する問題についても報告します。この機能は、次のリンターの Ultimate および Ultimate Plus ライセンスで利用できます。JVM 用 QodanaIntelliJ IDEA コードカバレッジエージェントが推奨ツールですが推奨される形式です。もサポートされています。JaCoCoJS 用 QodanaJestPHP...

ライセンス監査

プロジェクトのライセンスが依存関係のライセンスと互換性があることを確認するのは決して簡単な作業ではありませんが、これは法的な目的のために必要です。このプロセスを自動化して間違いを避けるために、現在いくつかの Qodana リンターによってサポートされているライセンス監査機能を使用できます。JVM 用 QodanaMaven および GradlePHP 用の QodanaComposerJS 用 Qodananpm および YarnPython 用 QodanapipGo 用 QodanaGo モ...