.NET の Qodana コミュニティ
.NET の Qodana コミュニティリンターの Docker イメージは、さまざまな使用シナリオをサポートするために提供されています。
継続的インテグレーションの一環として分析を定期的に実行する (CI ベースの実行 )
シングルショット分析 (たとえば、ローカルで実行)。
Qodana Community for .NET リンターは、2 つの方法を使用して実行できます。Qodana CLI(英語) が最も簡単な方法です。必要に応じて、インストールページ(英語)を確認して、Qodana CLI をインストールします。あるいは、「 」タブから Docker コマンドを使用することもできます。
クイックスタート
DotSettings を使用してコードインスペクションを構成する
以前に ReSharper を使用してターゲットソリューションに取り組んだことがある場合は、コードインスペクション設定がすでに構成されている可能性があります。その場合、InspectCode は .DotSettings
ファイルでカスタム設定を見つけて適用します。設定ファイルがない場合、すべての分析でデフォルトの重大度レベルが使用されます。コードインスペクションのカスタム重大度レベルに加えて、InspectCode は .DotSettings
ファイルで次の設定を検索します。
ソリューション全体の分析が有効かどうか
命名規則 (これは
.DotSettings
ファイルを使用してのみ設定できます)コード分析が部分的に無効になっている、生成コードを含むファイル、ファイルマスク、領域 (これは
.DotSettings
ファイルを使用してのみ設定できます)コード分析エンジンがキャッシュを保存する場所。ReSharper オプションの
ページで指定できます対象言語 (
)
CI サーバー上で InspectCode を構成するには、ReSharper、ソリューションチーム共有レイヤーに設定を保存するを使用してすべての構成をローカルで行い、ソリューションディレクトリ内の結果の YourSolution.sln.DotSettings
ファイルを VCS にコミットします。サーバー上の InspectCode はこれらの設定を見つけて適用します。
デフォルトでは、InspectCode はターゲットソリューション上で Roslyn アナライザーも実行します。Roslyn アナライザーを無効にする場合は、ソリューションの .DotSettings
ファイルで無効にできます。例:
EditorConfig を使用して、コードインスペクションを構成する
EditorConfig を使用してプロジェクトのコードスタイルを管理する場合は、.editorconfig
ファイルからコードインスペクションを構成することもできます。
EditorConfig の規約が示すように、InspectCode は、ルートファイルパスに到達するか、root=true
を持つ EditorConfig ファイルが見つかるまで、現在のファイルのディレクトリとそのすべての親ディレクトリにある .editorconfig
という名前のファイルに定義されているインスペクション設定を適用します。.editorconfig
ファイルで指定されたファイルマスク (*Test.cs
など) も考慮されます。
.editorconfig
ファイルのインスペクション設定は、他のプロパティと同様に構成されます。対応する行を追加します。
例: 次の行を使用して、Possible 'System.NullReferenceException'
インスペクションの重大度レベルを Error
に変更できます。
または、次の行を使用して Redundant argument with default value
インスペクションを無効にすることもできます。
各インスペクションの EditorConfig プロパティは、コードインスペクションインデックスセクションと EditorConfig プロパティのインデックスページのページにあります。- ブラウザー検索を使用して目的のインスペクションのプロパティを探すだけです。
分析をローカルで実行する
Docker Hub からイメージをプルします (
latest
バージョンに更新する場合にのみ必要です)。docker pull jetbrains/qodana-cdnet:2024.1-eap次のコマンドを実行して、ソースコードのインスペクションを開始します。
docker run \ -v <source-directory>/:/data/project/ \ -v <output-directory>/:/data/results/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-cdnet:2024.1-eapここで、
source-directory
とoutput-directory
は、それぞれプロジェクトソースコードディレクトリと分析結果ディレクトリへの完全なローカルパスです。QODANA_TOKEN
変数は、リンターライセンスに必要なプロジェクトトークンを参照します。プロジェクトトークンなしでリンターを使用しても、ローカルでのインスペクション結果の表示がサポートされていないため、役に立ちません。
ユーザーインターフェースが不要で、生データを確認する場合は、次のコマンドを使用します。
output-directory
にはインスペクションレポートが含まれます。
解析を連続して数回実行する場合は、docker run
で再度使用する前に結果ディレクトリをクリーンアップしていることを確認してください。
プロジェクトのルートディレクトリで次のコマンドを実行してコードをインスペクションし、インスペクションレポートをローカルで表示します。
ユーザーインターフェースが不要で、生データを確認する場合は、次のコマンドを使用します。
output-directory
は、SARIF 形式のレポートが保存されるディレクトリを指定します。QODANA_TOKEN
変数は、ライセンスに必要なプロジェクトトークンを参照します。
CI で分析を実行する
次のコマンドを汎用シェルエグゼキュータのタスクとして使用します。
ここで、source-directory
と output-directory
は、それぞれプロジェクトソースコードディレクトリと分析結果ディレクトリへのフルパスです。QODANA_TOKEN
変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。
クオリティゲート機能を使用して、特定の問題数に達したときにビルドを失敗させること、およびベースライン機能を使用して、新しい各リンター実行をベースラインとして選択された最初の実行と比較することを検討してください。
プロジェクトのルートディレクトリで次のコマンドを実行します。
これにより、インスペクションの結果が output-directory
で指定されたディレクトリに保存されます。
--fail-threshold
オプション(英語)を使用して、クオリティゲート機能を適用し、特定の問題数に達したときにビルドを失敗させることもできます。
ベースライン機能は、--baseline
および --baseline-include-absent
オプションを使用して、新しい Qodana Community for .NET の実行を初期実行と比較します。
GitHub で分析を実行する
この機能を使用するには、 qodana.yaml
ファイル内で、または GitHub の args
構成オプションを使用して、Qodana Community for .NET 名を指定する必要があります。例:
GitHub では、Qodana は Qodana Scan
GitHub アクションとして実装されます。Qodana Scan
GitHub アクションを構成するには、ワークフロー構成を含む .github/workflows/code_quality.yml
ファイルを保存します。
Qodana クラウドで承認し、レポートを Qodana クラウドに転送するには、次の手順に従います。
GitHub UI で、
QODANA_TOKEN
暗号化シークレット(英語)を作成し、プロジェクトトークンをその値として保存します。GitHub ワークフローで、次のスニペットを追加して
Qodana Scan
アクションを呼び出します。- name: 'Qodana Scan' uses: JetBrains/qodana-action@v2024.1 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
特定のソリューションまたはプロジェクトを分析する
デフォルトでは、Qodana は単一のソリューションファイルを見つけて使用しようとします。ソリューションファイルが存在しない場合は、プロジェクトファイルを見つけようとします。プロジェクトに複数のソリューションファイルが含まれている場合は、--solution
オプションとソリューションファイルへの相対パスを使用して正確なファイル名を指定する必要があります。例: Qodana が常に MySolution.sln
ソリューションファイルを分析するようにするには、次を使用できます。
あるいは、solution
オプションとソリューションファイルへの相対パスを使用して、 qodana.yaml
ファイルでソリューションファイル名を指定することもできます。
プロジェクトにソリューションファイルが含まれておらず、複数のプロジェクトファイルが含まれている場合は、--project
オプションとプロジェクトファイルへの相対パスを使用する必要があります。例: MyProject.csproj
プロジェクトファイルの場合、次を使用できます。
あるいは、project
オプションを使用して、 qodana.yaml
ファイルでプロジェクトファイル名を指定することもできます。
ソリューションを構成する
ソリューション構成は、ソリューション内のどのプロジェクトがビルドされるか、およびどのプロジェクト構成がソリューション内の特定のプロジェクトに使用されるかを定義します。
新しく作成された各ソリューションには Debug
構成と Release
構成が含まれており、カスタム構成で補完できます。
--configuration
オプションを使用して、現在のソリューションの構成を切り替えることができます。例: これを使用して Release
構成に切り替えます。
あるいは、qodana.yaml
で構成を指定することもできます。
デフォルトでは、ソリューションプラットフォームは Any CPU
に設定されています。--platform
オプションを使用してこれをオーバーライドできます。
あるいは、qodana.yaml
でプラットフォームを指定することもできます。
使用統計
JetBrains EAP ユーザー契約(英語)によると、ユーザーエクスペリエンスをさらに向上させるために、サードパーティのサービスを使用して機能の使用状況を分析できます。すべてのデータは匿名で収集されます。--no-statistics=true
CLI オプションを使用して統計を無効にできます。
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
.NET の Qodana コミュニティ
Qodana Community for .NET は、ReSharper に基づくコミュニティリンターであり、.NET プロジェクトの静的分析を提供します。ReSharper のすべての機能が組み込まれており、次のことに役立ちます。異常なコードと考えられるバグを検出、デッドコードを削除する、スペルの問題をハイライトする、全体的なコード構造を改善する、コーディングのベストプラクティスを紹介する、インスペクションの結果を Qodana クラウドにアップロードする、Qodana Community fo...
![](https://resources.jetbrains.com/help/img/dotnet/2024.1/inspection_severity_change.png)
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...
![](https://resources.jetbrains.com/help/img/dotnet/2024.1/settings_default.png)
ReSharper 設定の管理と共有
ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例: 記号のアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。設定の特定のサブセットを VCS に保持することにより、チーム内の設定を同期できます。ReShar...
![](https://resources.jetbrains.com/help/img/dotnet/2024.1/edit_naming_rule_dialog.png)
ネーミングスタイル
ReSharper は、コード内のシンボルの希望する命名スタイルを定義、制御、適用できます。一連のルールがあり、各ルールは一連の制約を持つ特定の識別子を対象とします (たとえば、ルールは静的プライベート読み取り専用フィールドを対象にすることができます)。各ルールには、複合語、アンダースコア、サフィックス、プレフィックスなどの大文字化を定義する 1 つ以上の関連スタイルを含めることができます。これらのルールは、ReSharper がコード補完およびコード生成機能を使用して新しいコードを生成し、コー...
![](https://resources.jetbrains.com/help/img/dotnet/2024.1/EditorConfig_in_options.png)
EditorConfig を使用する
ReSharper は、EditorConfig 形式で定義されたコード形式スタイル、コード構文スタイル、C# の命名スタイル、コードインスペクション重大度レベルをサポートします。Matthell は、ReSharper が EditorConfig を使用してフォーマットルールの設定全体をどのように維持するのをヘルプいるかを示しています。EditorConfig とは何ですか? ReSharper はどのようにそれを拡張しますか? :EditorConfig は、同じコードで作業しているチームメ...
![](https://pleiades.io/icons/resharper.png)
コードインスペクション
ReSharper は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション ReSharper が提供するコードの種類を調べるには、異なる言語の ReSharper コードインスペクションの全リストをご覧ください。コードインスペクションは、以下のグループに分...