Qodana 2024.1 ヘルプ

.NET の Qodana コミュニティ

official JetBrains project

.NET の Qodana コミュニティリンターの Docker イメージは、さまざまな使用シナリオをサポートするために提供されています。

  • 継続的インテグレーションの一環として分析を定期的に実行する (CI ベースの実行 )

  • シングルショット分析 (たとえば、ローカルで実行)。

Qodana Community for .NET リンターは、2 つの方法を使用して実行できます。Qodana CLI(英語) が最も簡単な方法です。必要に応じて、インストールページ(英語)を確認して、Qodana CLI をインストールします。あるいは、「Docker イメージ」タブから Docker コマンドを使用することもできます。

DotSettings を使用してコードインスペクションを構成する

以前に ReSharper を使用してターゲットソリューションに取り組んだことがある場合は、コードインスペクション設定がすでに構成されている可能性があります。その場合、InspectCode は .DotSettings ファイルでカスタム設定を見つけて適用します。設定ファイルがない場合、すべての分析でデフォルトの重大度レベルが使用されます。コードインスペクションのカスタム重大度レベルに加えて、InspectCode は .DotSettings ファイルで次の設定を検索します。

CI サーバー上で InspectCode を構成するには、ReSharper、ソリューションチーム共有レイヤーに設定を保存するを使用してすべての構成をローカルで行い、ソリューションディレクトリ内の結果の YourSolution.sln.DotSettings ファイルを VCS にコミットします。サーバー上の InspectCode はこれらの設定を見つけて適用します。

デフォルトでは、InspectCode はターゲットソリューション上で Roslyn アナライザーも実行します。Roslyn アナライザーを無効にする場合は、ソリューションの .DotSettings ファイルで無効にできます。例:

<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <!-- Enable/disable Roslyn analyzers and Source Generators --> <s:Boolean x:Key="/Default/CodeInspection/Roslyn/RoslynEnabled/@EntryValue">False</s:Boolean> <!-- Include/exclude Roslyn analyzers in Solution-Wide Analysis --> <s:Boolean x:Key="/Default/CodeInspection/Roslyn/UseRoslynInSwea/@EntryValue">False</s:Boolean> </wpf:ResourceDictionary>

EditorConfig を使用して、コードインスペクションを構成する

EditorConfig を使用してプロジェクトのコードスタイルを管理する場合は、.editorconfig ファイルからコードインスペクションを構成することもできます。

EditorConfig の規約が示すように、InspectCode は、ルートファイルパスに到達するか、root=true を持つ EditorConfig ファイルが見つかるまで、現在のファイルのディレクトリとそのすべての親ディレクトリにある .editorconfig という名前のファイルに定義されているインスペクション設定を適用します。.editorconfig ファイルで指定されたファイルマスク (*Test.cs など) も考慮されます。

.editorconfig ファイルのインスペクション設定は、他のプロパティと同様に構成されます。対応する行を追加します。

[inspection_property]=[error | warning | suggestion | hint | none]

例: 次の行を使用して、Possible 'System.NullReferenceException' インスペクションの重大度レベルError に変更できます。

resharper_possible_null_reference_exception_highlighting=error

または、次の行を使用して Redundant argument with default value インスペクションを無効にすることもできます。

resharper_redundant_argument_default_value_highlighting=none

各インスペクションの EditorConfig プロパティは、コードインスペクションインデックスセクションと EditorConfig プロパティのインデックスページのページにあります。- ブラウザー検索を使用して目的のインスペクションのプロパティを探すだけです。

分析をローカルで実行する

  1. Docker Hub からイメージをプルします (latest バージョンに更新する場合にのみ必要です)。

    docker pull jetbrains/qodana-cdnet:2024.1-eap
  2. 次のコマンドを実行して、ソースコードのインスペクションを開始します。

    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-directoryoutput-directory は、それぞれプロジェクトソースコードディレクトリと分析結果ディレクトリへの完全なローカルパスです。QODANA_TOKEN 変数は、リンターライセンスに必要なプロジェクトトークンを参照します。プロジェクトトークンなしでリンターを使用しても、ローカルでのインスペクション結果の表示がサポートされていないため、役に立ちません。

ユーザーインターフェースが不要で、生データを確認する場合は、次のコマンドを使用します。

docker run \    -v <source-directory>/:/data/project/ \    -v <output-directory>/:/data/results/ \    -e QODANA_TOKEN="<cloud-project-token>" \    jetbrains/qodana-cdnet:2024.1-eap

output-directory にはインスペクションレポートが含まれます。

解析を連続して数回実行する場合は、docker run で再度使用する前に結果ディレクトリをクリーンアップしていることを確認してください。

プロジェクトのルートディレクトリで次のコマンドを実行してコードをインスペクションし、インスペクションレポートをローカルで表示します。

qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    -l jetbrains/qodana-cdnet:2024.1-eap \    --show-report

ユーザーインターフェースが不要で、生データを確認する場合は、次のコマンドを使用します。

qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    -l jetbrains/qodana-cdnet:2024.1-eap \    --results-dir <output-directory>

output-directory は、SARIF 形式のレポートが保存されるディレクトリを指定します。QODANA_TOKEN 変数は、ライセンスに必要なプロジェクトトークンを参照します。

CI で分析を実行する

次のコマンドを汎用シェルエグゼキュータのタスクとして使用します。

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-directoryoutput-directory は、それぞれプロジェクトソースコードディレクトリと分析結果ディレクトリへのフルパスです。QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。

クオリティゲート機能を使用して、特定の問題数に達したときにビルドを失敗させること、およびベースライン機能を使用して、新しい各リンター実行をベースラインとして選択された最初の実行と比較することを検討してください。

プロジェクトのルートディレクトリで次のコマンドを実行します。

qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    -l jetbrains/qodana-cdnet:2024.1-eap \    --results-dir <output-directory>

これにより、インスペクションの結果が output-directory で指定されたディレクトリに保存されます。

--fail-threshold オプション(英語)を使用して、クオリティゲート機能を適用し、特定の問題数に達したときにビルドを失敗させることもできます。

ベースライン機能は、--baseline および --baseline-include-absent オプションを使用して、新しい Qodana Community for .NET の実行を初期実行と比較します。

GitHub で分析を実行する

この機能を使用するには、 qodana.yaml ファイル内で、または GitHub の args 構成オプションを使用して、Qodana Community for .NET 名を指定する必要があります。例:

args: --linter,qodana-cdnet:2024.1-eap

GitHub では、Qodana は Qodana Scan GitHub アクションとして実装されます。Qodana Scan GitHub アクションを構成するには、ワークフロー構成を含む .github/workflows/code_quality.yml ファイルを保存します。

name: Qodana on: workflow_dispatch: pull_request: push: branches: - main - 'releases/*' jobs: qodana: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2024.1

Qodana クラウドで承認し、レポートを Qodana クラウドに転送するには、次の手順に従います。

  1. GitHub UI で、QODANA_TOKEN 暗号化シークレット(英語)を作成し、プロジェクトトークンをその値として保存します。

  2. GitHub ワークフローで、次のスニペットを追加して Qodana Scan アクションを呼び出します。

    - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2024.1 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}

特定のソリューションまたはプロジェクトを分析する

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

--solution=MySolution.sln

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

dotnet: solution: MySolution.sln

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

--project=MyProject.csproj

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

dotnet: project: MyProject.csproj

ソリューションを構成する

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

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

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

--configuration=Release

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

dotnet: configuration: Release

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

--platform=x86

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

dotnet: platform: x86

使用統計

JetBrains EAP ユーザー契約(英語)によると、ユーザーエクスペリエンスをさらに向上させるために、サードパーティのサービスを使用して機能の使用状況を分析できます。すべてのデータは匿名で収集されます。--no-statistics=true CLI オプションを使用して統計を無効にできます。

関連ページ:

.NET の Qodana コミュニティ

Qodana Community for .NET は、ReSharper に基づくコミュニティリンターであり、.NET プロジェクトの静的分析を提供します。ReSharper のすべての機能が組み込まれており、次のことに役立ちます。異常なコードと考えられるバグを検出、デッドコードを削除する、スペルの問題をハイライトする、全体的なコード構造を改善する、コーディングのベストプラクティスを紹介する、インスペクションの結果を Qodana クラウドにアップロードする、Qodana Community fo...

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

ReSharper 設定の管理と共有

ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例: 記号のアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。設定の特定のサブセットを VCS に保持することにより、チーム内の設定を同期できます。ReShar...

ネーミングスタイル

ReSharper は、コード内のシンボルの希望する命名スタイルを定義、制御、適用できます。一連のルールがあり、各ルールは一連の制約を持つ特定の識別子を対象とします (たとえば、ルールは静的プライベート読み取り専用フィールドを対象にすることができます)。各ルールには、複合語、アンダースコア、サフィックス、プレフィックスなどの大文字化を定義する 1 つ以上の関連スタイルを含めることができます。これらのルールは、ReSharper がコード補完およびコード生成機能を使用して新しいコードを生成し、コー...

EditorConfig を使用する

ReSharper は、EditorConfig 形式で定義されたコード形式スタイル、コード構文スタイル、C# の命名スタイル、コードインスペクション重大度レベルをサポートします。Matthell は、ReSharper が EditorConfig を使用してフォーマットルールの設定全体をどのように維持するのをヘルプいるかを示しています。EditorConfig とは何ですか? ReSharper はどのようにそれを拡張しますか? :EditorConfig は、同じコードで作業しているチームメ...

コードインスペクション

ReSharper は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション ReSharper が提供するコードの種類を調べるには、異なる言語の ReSharper コードインスペクションの全リストをご覧ください。コードインスペクションは、以下のグループに分...