.NET 用 Qodana
.NET 用 Qodana リンターの Docker イメージは、さまざまな使用シナリオをサポートするために提供されています。
継続的インテグレーションの一環として分析を定期的に実行する (CI ベースの実行 )
シングルショット分析 (たとえば、ローカルで実行)。
Rider コードインスペクションに精通しており、エディター外での静的解析で何を期待できるかを知っている場合は、次のセクションをスキップして既存のプロファイルの使用から続行できます。
現場での作業を開始したばかりの場合は、提供されているデフォルトのセットアップを続行することをお勧めします。コードベースで実行される最も一般的なチェックの結果が表示されます。後で、ニーズに合わせて調整することができます。
Qodana for .NET リンターは 2 つの方法を使用して実行できます。Qodana CLI(英語) が最も簡単な方法です。必要に応じて、インストールページ(英語)を確認して、Qodana CLI をインストールします。あるいは、「 」タブから Docker コマンドを使用することもできます。
推奨プロファイルでクイックスタート
分析をローカルで実行する
Qodana CLI(英語) はネイティブモードで実行できます。これは、.NET フレームワークをターゲットにしている場合、またはプライベート NuGet フィードがある場合に、.NET リンターの Qodana に推奨される方法です。
ここで、--ide
オプションは JetBrains IDE バイナリファイルをダウンロードして使用します。
または、次の構成を qodana.yaml
ファイルに保存します。
次のコマンドを使用して Qodana を実行します。
これは、.NET リンターの Qodana の Dockerized バージョンを実行する方法です。
Docker Hub からイメージをプルします (
latest
バージョンに更新する場合にのみ必要です)。docker pull jetbrains/qodana-dotnet:2024.1次のコマンドを実行します。
docker run \ -v <source-directory>/:/data/project/ \ -v <output-directory>/:/data/results/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-dotnet:2024.1ここで、
source-directory
とoutput-directory
は、それぞれプロジェクトソースコードディレクトリと分析結果ディレクトリへの完全なローカルパスです。QODANA_TOKEN
変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。
このコマンドはソースコードの分析を実行し、Web サーバーを起動して結果を簡単に表示します。ブラウザーで Qodana クラウド(英語)を開いて、インスペクションの結果を調べます。ここで分析を再構成することもできます。詳細については、インスペクションレポートを参照してください。
ユーザーインターフェースが不要で、生データを確認する場合は、次のコマンドを使用します。
output-directory
には必要な結果がすべて含まれます。テクニカルガイドの説明に従って、コマンドをさらに調整できます。
解析を連続して数回実行する場合は、docker run
で再度使用する前に結果ディレクトリをクリーンアップしていることを確認してください。
プライベート NuGet フィードを使用して、.NET 用の Qodana を実行できます。
プライベート NuGet フィードを使用するための構成例は、GitHub(英語) Web サイトで入手できます。
プロジェクトのルートディレクトリで次のコマンドを実行してコードをインスペクションし、インスペクションレポートをローカルで表示します。
ユーザーインターフェースが不要で、生データを確認する場合は、次のコマンドを使用します。
output-directory
は、SARIF 形式のレポートが保存されるディレクトリを指定します。QODANA_TOKEN
変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。
CI で分析を実行する
次のコマンドを汎用シェルエグゼキュータのタスクとして使用します。
ここで、source-directory
と output-directory
は、それぞれプロジェクトソースコードディレクトリと分析結果ディレクトリへのフルパスです。QODANA_TOKEN
変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。
クオリティゲート機能を使用して、特定の問題数に達したときにビルドを失敗させること、およびベースライン機能を使用して、新しい Qodana for .NET の実行をベースラインとして選択された初期実行と比較することを検討してください。非 root として実行するもサポートされています。
プロジェクトのルートディレクトリで次のコマンドを実行します。
これにより、インスペクションの結果が output-directory
で指定されたディレクトリに保存されます。
--fail-threshold
オプション(英語)を使用して、クオリティゲート機能を適用し、特定の問題数に達したときにビルドを失敗させることもできます。
ベースライン機能は、--baseline
および --baseline-include-absent
オプションを使用して、.NET の新しい Qodana の実行を初期実行と比較します。
GitHub で分析を実行する
GitHub では、Qodana は Qodana Scan
GitHub アクションとして実装されます。Qodana Scan
GitHub アクションを構成するには、ワークフロー構成を含む .github/workflows/code_quality.yml
ファイルを保存します。
このワークフローを使用すると、Qodana はメインブランチ、リリースブランチ、リポジトリに届くプルリクエストで実行されます。
Qodana Scan
は実験用であるため、with
セクションで pr-mode
パラメーターを追加構成する必要がある場合があります。
デフォルトでは、Qodana Scan
は Qodana for .NET リンターの実験モードを使用します。問題が発生した場合は、バグトラッカーで問題を報告(英語)できます。
Qodana クラウドで承認し、レポートを Qodana クラウドに転送するには、次の手順に従います。
GitHub UI で、
QODANA_TOKEN
暗号化シークレット(英語)を作成し、プロジェクトトークンをその値として保存します。GitHub ワークフローで、次のスニペットを追加して
Qodana Scan
アクションを呼び出します。- name: 'Qodana Scan' uses: JetBrains/qodana-action@v2024.1 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
プルリクエストを分析する
マージやプルリクエストなどの変更セットに対して増分分析を実行できます。
たとえば、特定のコミット内での作業を終了し、変更を分析したい場合は、--diff-start
オプションを使用できます。
2 つのコミット間の変更セットをインスペクションするには、--diff-start
と --diff-end
の両方のオプションを使用します。
既存のプロファイルの使用
このセクションは、Rider インスペクションプロファイルによるコード分析の構成に慣れているユーザーを対象としています。
コンテナー内のプロファイルを /data/profile.xml
にマッピングすることで、既存のプロファイルへの参照を渡すことができます。
コンテナー内でプロファイルをマッピングすることで、既存のプロファイルへの参照を渡すことができます。
qodana.yaml 経由で設定する
Qodana は分析構成の qodana.yaml
ファイルを自動的に認識するため、追加のパラメーターを渡す必要はありません。qodana.yaml
ファイルでは、ide: QDNET
を保存して、Qodana をネイティブモードで実行できます。
インスペクションプロファイルへの参照は、特定の順序で解決されます。形式については、「YAML ファイル」を参照してください。
特定のソリューションまたはプロジェクトを分析する
デフォルトでは、Qodana は単一のソリューションファイルを見つけて使用しようとします。ソリューションファイルが存在しない場合は、プロジェクトファイルを見つけようとします。プロジェクトに複数のソリューションファイルが含まれている場合は、--solution
オプションとソリューションファイルへの相対パスを使用して正確なファイル名を指定する必要があります。例: Qodana が常に MySolution.sln
ソリューションファイルを分析するようにするには、次を使用できます。
あるいは、solution
オプションとソリューションファイルへの相対パスを使用して、 qodana.yaml
ファイルでソリューションファイル名を指定することもできます。
プロジェクトにソリューションファイルが含まれておらず、複数のプロジェクトファイルが含まれている場合は、--project
オプションとプロジェクトファイルへの相対パスを使用する必要があります。例: MyProject.csproj
プロジェクトファイルの場合、次を使用できます。
あるいは、project
オプションを使用して、 qodana.yaml
ファイルでプロジェクトファイル名を指定することもできます。
ソリューションを構成する
ソリューション構成は、ソリューション内のどのプロジェクトをビルドするか、およびソリューション内の特定のプロジェクトにどのプロジェクト構成を使用するかを定義します。
新しく作成された各ソリューションには Debug
構成と Release
構成が含まれており、カスタム構成で補完できます。
--property
構成オプションを使用して、現在のソリューションの構成を切り替えることができます。例: これを使用して Release
構成に切り替えます。
あるいは、qodana.yaml
で構成を指定することもできます。
デフォルトでは、ソリューションプラットフォームは Any CPU
に設定されています。--property
オプションを使用してこれをオーバーライドできます。
あるいは、qodana.yaml
でプラットフォームを指定することもできます。
プライベート NuGet リポジトリを使用してプロジェクトをインスペクションする
Qodana for .NET は、Windows 認証などを使用したプライベート NuGet リポジトリの認証をサポートしていません。この制限を克服するには、以下に示すように、必要なパッケージをすべて Qodana キャッシュ内に配置します。
ローカルファイルシステムに、キャッシュを含むフォルダーを作成します。例:
C:/Temp/QodanaCache
にすることができます。--cache-dir C:/Temp/QodanaCache
オプションを使用した Qodana の実行。デフォルトで
%userprofile%\.nuget\packages
フォルダーに含まれるすべての NuGet パッケージをC:/Temp/QodanaCache/nuget
にコピーします。カスタムパッケージフォルダーがある場合は、%userprofile%\.nuget\packages
ではなく、そのフォルダーからパッケージをコピーします。--cache-dir C:/Temp/QodanaCache
を使用して Qodana をもう一度実行します。
使用統計
JetBrains EAP ユーザー契約(英語)によると、ユーザーエクスペリエンスをさらに向上させるために、サードパーティのサービスを使用して機能の使用状況を分析できます。すべてのデータは匿名で収集されます。使用する Docker コマンドのオプションを調整することで、使用状況統計のレポートを無効にできます。詳細については、テクニカルガイドを参照してください。
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
.NET 用 Qodana
Qodana for .NET は Rider に基づいており、.NET プロジェクトの静的分析を提供します。Rider のすべての機能が組み込まれており、次のことに役立ちます。異常なコードと考えられるバグを検出、デッドコードを削除する、スペルの問題をハイライトする、全体的なコード構造を改善する、コーディングのベストプラクティスを紹介する、インスペクションの結果を Qodana クラウドにアップロードする、Qodana for .NET は、C、C++、C#、VB.NET、JavaScript、Typ...
![](https://resources.jetbrains.com/help/img/rider/2024.1/Code_Analysis__Code_Highlighting__Warnings__2.png)
コードインスペクション
JetBrains Rider は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション JetBrains Rider が提供するコードの種類を調べるには、異なる言語の JetBrains Rider コードインスペクションの全リストをご覧ください。コードイ...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/ui-overview.png)
インスペクションレポート
Qodana を使用すると、ローカルまたは Qodana クラウドで、インタラクティブでユーザーフレンドリーな形式でインスペクションレポートを確認できます。各レポートには次のタブが含まれています。実際の問題は、Qodana が最新のインスペクション中に検出した問題を明らかにします、ベースラインには、ベースラインとしてマークされ、それ以降修正されていない問題がリストされます。構成により、将来の使用に備えて Qodana を構成できます、ライセンス監査は
![](https://resources.jetbrains.com/help/img/qodana/2024.1/baseline-enabled.png)
ベースライン
ベースラインは、特定の Qodana 実行時に取得され、ファイルに含まれているコードベースの問題のスナップショットです。ベースライン機能を使用すると、現在のコードとベースラインの状態を比較し、新しい問題、変更されていない問題、解決された問題を確認できます。この機能は、Community、Ultimate、Ultimate Plus ライセンスとその試用版で利用可能なすべてのリンターでサポートされています。使い方:ベースラインなしで Qodana を実行すると、現在の実行時に検出された問題を確認...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/qc-about-diagram.png)
Qodana クラウド
Qodana を複数のプロジェクトまたはリポジトリで実行する場合、特にコードベースが複数のサーバーと仮想プライベートネットワークに分散されていて、各チームが独立して作業している場合は、すべての分析レポートを 1 か所に読み込んで集約すると便利です。このような場合、すべての Qodana インスタンスからレポート情報を収集して表示するための集中型ソリューションが役立ちます。Qodana クラウドは、さまざまな Qodana レポートを蓄積し、プロジェクトの進捗状況を一元的に追跡するのに役立つクラウ...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/qc-create-project.png)
プロジェクト
プロジェクトは、Qodana レポートを蓄積します。各プロジェクトは、プロジェクトトークンによって一意に識別されます。このトークンは、Qodana レポートのアップロードに使用されます。プロジェクトの作成:オンボーディング段階では、Qodana Cloud がすでに最初のプロジェクトの作成を支援しているため、これらの手順は追加のプロジェクトを作成する場合にのみ適用されます。チームページで、ボタンをクリックします。以下で説明するウィザードの手順に従います。Qodana Cloud からアクセスでき...