.NET 用 Qodana
![Qodana (.NET リンター言語用) Qodana for .NET linter languages](https://resources.jetbrains.com/help/img/qodana/2024.1/dotnet-linter.png)
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 機能を提供します。
プロジェクトをローカルで分析する
プロジェクトの依存関係をインストールする (ノンネイティブモード)
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 をインストールします。
プロジェクトのビルド
Qodana を使用してインスペクションする前にプロジェクトをビルドします。プロジェクトディレクトリに含まれる qodana.yaml
ファイルの bootstrap
キーを使用してこれを実行できます。
Qodana の設定
Qodana のバージョン 2023.3 以降、Qodana for .NET リンターを実行するにはネイティブモードが推奨される方法です。プロジェクトをビルドするのと同じマシンでネイティブモードを実行することをお勧めします。これにより、Qodana がプライベート NuGet フィードにアクセスできることが保証されます。
解決策を指定する
デフォルトでは、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
でプラットフォームを指定することもできます。
Roslyn アナライザー
.NET プロジェクトには、個別のインスペクションとして Roslyn アナライザーがあり、EditorConfig
ファイルを使用して構成できます。これらを無効にするには、qodana.yaml
ファイルを使用して Qodana プロファイルを構成します。例:
別の構成例は GitHub (英語) で入手できます。
Qodana の実行
Qodana CLI(英語) はネイティブモードで実行できます。これは、Qodana for .NET リンターに推奨される方法です。あるいは、「 」タブから Docker コマンドを使用することもできます。
すでにマシンに Qodana CLI がインストールされて(英語)おり、このセクションの推奨事項に従っていることを前提として、プロジェクトのルートディレクトリで次のコマンドを実行できます。
ここで、--ide
オプションは JetBrains IDE バイナリファイルをダウンロードして使用します。
あるいは、qodana.yaml
ファイルに ide: QDNET
構成を保存し、次のコマンドを使用して Qodana を実行することもできます。
プライベート NuGet フィードを使用する予定の場合は、プロジェクトをビルドするのと同じマシンでネイティブモードを実行することをお勧めします。これにより、Qodana がプライベート NuGet フィードにアクセスできることが保証されます。
まず、Docker Hub からイメージをプルします (最新バージョンを取得する場合にのみ必要です)。
source-directory
がプロジェクトのルートを指し、QODANA_TOKEN
がプロジェクトトークンを参照して、ローカル分析を開始します。
インスペクションの結果を調べるには、ブラウザーで Qodana クラウド(英語)を開きます。
プライベート NuGet フィードを使用して、.NET 用の Qodana を実行できます。
プライベート NuGet フィードを使用するための構成例は、GitHub(英語) Web サイトで入手できます。
プルリクエストを分析する
マージやプルリクエストなどの変更セットに対して増分分析を実行できます。
たとえば、特定のコミット内での作業を終了し、変更を分析したい場合は、--diff-start
オプションを使用できます。
2 つのコミット間の変更セットをインスペクションするには、--diff-start
と --diff-end
の両方のオプションを使用します。
次のステップ
関連ページ:
![](https://resources.jetbrains.com/help/img/qodana/2024.1/qc-about-diagram.png)
Qodana クラウド
Qodana を複数のプロジェクトまたはリポジトリで実行する場合、特にコードベースが複数のサーバーと仮想プライベートネットワークに分散されていて、各チームが独立して作業している場合は、すべての分析レポートを 1 か所に読み込んで集約すると便利です。このような場合、すべての Qodana インスタンスからレポート情報を収集して表示するための集中型ソリューションが役立ちます。Qodana クラウドは、さまざまな Qodana レポートを蓄積し、プロジェクトの進捗状況を一元的に追跡するのに役立つクラウ...
![](https://pleiades.io/icons/jetbrains_logo.png)
ネイティブモード
デフォルトでは、Qodana は Linux イメージに基づいて Docker を使用してリンターを実行します。特定のケースでは、プライベートパッケージを処理するか、Docker の不完全なサポートを提供するオペレーティングシステム上で Qodana を実行する必要があります。これを克服するために、Qodana は .NET 用 Qodana リンターのネイティブモードをサポートしています。この場合、Qodana は実行環境を再利用するため、プロジェクトのビルドに使用するのとまったく同じ環境で Qo...
![](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/code-coverage-report-qodana.png)
コードカバレッジ
コードカバレッジは、生成されたレポートを使用して、メソッド、クラス、ファイル内の全体的なコードカバレッジを計算します。また、これらのエンティティにおけるカバレッジの不足に関連する問題についても報告します。この機能は、次のリンターの Ultimate および Ultimate Plus ライセンスで利用できます。JVM 用 QodanaIntelliJ IDEA コードカバレッジエージェントが推奨ツールですが推奨される形式です。もサポートされています。JaCoCoJS 用 QodanaJestPHP...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/license-audit-overview-tree.png)
ライセンス監査
プロジェクトのライセンスが依存関係のライセンスと互換性があることを確認するのは決して簡単な作業ではありませんが、これは法的な目的のために必要です。このプロセスを自動化して間違いを避けるために、現在いくつかの Qodana リンターによってサポートされているライセンス監査機能を使用できます。JVM 用 QodanaMaven および GradlePHP 用の QodanaComposerJS 用 Qodananpm および YarnPython 用 QodanapipGo 用 QodanaGo モ...