カスタム YAML プロファイル
バージョン 2023.2 以降では、YAML を使用して Qodana プロファイルを作成および構成できます。Qodana では、プロファイル構成に関連する次のようないくつかの改善も提供されています。
ファイルパスとスコープのサポート
インスペクションパラメーターのサポート
プロファイル関係。プロファイルを拡張して含めることができます
このサンプルでは、ニーズに合わせて Qodana を微調整する方法を示します。
このサンプルは、いくつかのノードで構成されています。
セクション | 説明 |
---|---|
プロファイル構成の基礎となるプロファイル | |
インスペクションプロファイルの名前 | |
既存のファイルベースのプロファイルをプロファイルに含める | |
プロファイルに含めるか除外する必要があるインスペクショングループ | |
|
基本プロファイル
baseProfile
ブロックを使用すると、プロファイル構成の基礎となるプロファイルを指定できます。次の値を受け入れることができます。
| 説明 |
---|---|
| JetBrains IDE から取得されたデフォルトのプロファイル |
| プロファイルは基本的に |
| |
| デフォルトの Qodana プロファイル、 |
| JetBrains IDE のデフォルトプロファイルを実装するデフォルトの Qodana プロファイル |
| インスペクションの重大度とパラメーターは |
このパラメーターが欠落している場合、Qodana は Project Default
プロファイルを採用するため、カスタムプロファイルに適用されるすべての設定は、Project Default
に含まれるそのような設定をオーバーライドします。
名前
プロファイルの任意の名前。
グループ
groups
ブロックは、ユーザー定義グループのリストです。ここでは、インスペクションカテゴリと単一のインスペクションを組み合わせて、 inspections
ブロックでそれらの使用箇所を構成できます。
各グループ定義では、他のグループまたは単一のインスペクションを含めたり除外したりできます。
感嘆符文字 (!
) を使用して、グループまたはカテゴリを否定できます。例: 含まれるグループ内の特定のカテゴリの使用を除外できます。
ユーザーが定義した EnabledInspections
グループを含むサンプルを次に示します。
このサンプルには次のプロパティが含まれています。
プロパティ | 説明 |
---|---|
グループの ID | |
このグループに含まれるインスペクションと除外されるインスペクションのリスト | |
このグループに含まれるグループと除外されるグループのリスト |
groups.groupId
一意のグループ識別子。
2 つのグループが同じ groupId
で定義されている場合、ファイル内で見つかった最新のグループが使用されます。インクルードされるファイルに含まれる設定は、現在のファイルに配置される設定よりも前に考慮されるため、このルールはインクルードされるすべてのファイルにも適用されます。
groups.inspections
グループに含まれるインスペクションのリスト。
groups.groups
使用可能な感嘆符文字 (!
) を含むグループ ID のリスト:
ここで、groups
にはいくつかの値がリストされています。
| 説明 |
---|---|
| インスペクションをすべて含めます。それに加えて、 |
| |
| 既存のユーザー定義グループの名前、または含まれているプロファイルのグループの名前 |
| ユーザー定義または別のプロファイルに含まれている既存の |
| インスペクションを特定の重大度レベルで含めるか除外します。重大度の値は |
デフォルトでは、Qodana は、次の表に示す JetBrains IDE から継承した重大度レベルを使用します。
インスペクション
inspections
を使用すると、次のことが可能になります。
特定のグループまたはインスペクションを有効または無効にする
これらの設定を適用する順序を定義します。
特定のグループまたはインスペクションによって無視されるパスまたはスコープを定義します。
特定のインスペクションまたはインスペクショングループの重症度をカスタマイズする
インスペクションオプションを構成します。
このサンプルには、いくつかのプロパティが含まれています。
プロパティ | 説明 |
---|---|
| 埋め込みグループまたはユーザー定義グループの |
| インスペクションの ID |
| インスペクションのグループまたは単一のインスペクションに割り当てられる重大度レベル。例: |
| インスペクション中に無視されるグロブパターン(英語)とスコープを使用するパスのリスト |
| グループまたはインスペクションをプロファイルで有効にするかどうかを指定します。 |
| 特定のインスペクションに対して構成できるオプションのリスト |
包含
含まれるプロファイルへの相対パスのリストが含まれます。
include
ブロックは baseProfile
とは関係ありません。baseProfile
に値が含まれていない場合は、Default
に設定されます。
デフォルトプロファイルを表示するには、JetBrains IDE で設定 | エディター | インスペクションに移動し、プロファイルドロップダウンセレクターで Default
プロファイルを選択します。
ファイルの内容は出現順に含まれるため、プロファイルの一部になります。これは、含まれるファイルの設定が、カスタムプロファイルで指定された設定よりも前に使用されることを意味します。
サンプル
foo.yaml
および bar.yaml
プロファイルがあると仮定します。
foo.yaml
プロファイルは Inspection1
、Inspection2
、Inspection3
インスペクションを有効にします。
bar.yaml
プロファイルは、Inspection1
インスペクションを無効にします。
これら 2 つのファイルをカスタムプロファイルに含めて、Inspection2
を無効にすることができます。
この場合、Qodana によって読み取られる有効なプロファイル構成は次のようになります。
構成例
ここでは、プロファイル構成のいくつかの例を見つけることができます。プロファイルを設定するセクションでは、コードをインスペクションしながらプロファイルを実行する方法について説明します。
インスペクションを除外する
このサンプルは、PHP 用の Qodana リンターから PhpDeprecationInspection
インスペクションを除外する方法を示しています。
あるいは、groups
を使用して PhpDeprecationInspection
インスペクションを除外することもできます。
除外対象パス
ignore
ブロックを使用すると、コードのインスペクション中に特定のスコープとパスを無視できます。
以下のサンプルでは、vendor/**
値は、プロジェクトルートに含まれる vendor
ディレクトリの内容を無視するグロブパターン(英語)を使用しています。
スコープ定義 scope#file:*.js:testData//*
は、testData/
ディレクトリに再帰的に含まれる .js
拡張子を持つすべてのファイルを無視します。
プロファイルを最初から作成する
baseProfile
を使用して、この構成では空のプロファイルを定義し、JVM 用 Qodana リンターからの Java/Data flow
インスペクショングループのみを含めます。
baseProfile
の代わりに、 groups
プロパティで ALL
を使用できます。
既存のプロファイルを上書きする
.NET 用 Qodana リンターに関連しないインスペクションカテゴリを qodana.starter
(英語) プロファイルから除外できます。
重大度でフィルタリングする
このサンプルには、Java コードのインスペクション中に、重大度レベルが WEAK WARNING
のすべてのインスペクションが含まれています。
インスペクションの重大度を上書きする
既存のインスペクションの重大度レベルを上書きできます。WARNING
重大度レベルを JavadocReference
インスペクションに割り当てる方法は次のとおりです。
インスペクションオプションを設定する
いくつかのインスペクションは構成オプションを提供します。利用可能なオプションのリストは GitHub(英語) で確認できます。
例: MissingOverrideAnnotation
インスペクションの場合、ignoreObjectMethods
および ignoreAnonymousClassMethods
オプションが見つかります。
これは、プロファイル内のこれらのオプションをオーバーライドする方法です。
次のステップ
プロファイルを構成した後、プロファイルを設定するセクションの推奨事項に従って、そのプロファイルを使用して Qodana を実行できます。
関連ページ:
スコープ言語構文リファレンス
スコープ言語を使用して、プロジェクトスコープ (ファイル、ディレクトリ、サブディレクトリのセット) を指定できます。クラスのセット:単一のクラスは、たとえばクラス名によって定義されます:、サブパッケージに拒否されない、パッケージ内のすべてのクラスのセットは、たとえば、ドットの後のアスタリスクで定義されます。サブパッケージの内容を含むパッケージ内のすべてのクラスのセットは、ダブルドットの後のアスタリスクで定義されます(例:)。ファイルのセット:単一のファイルを追加するには、ファイル名を使用する
SARIF 出力
Qodana レポートは SARIF 仕様に従ってフォーマットされ、JSON ファイルに含まれます。SARIF の Qodana 実装は、一般的な形式規則に従いますが、プロパティバッグに含まれるいくつかのカスタムプロパティも指定します。レポートの構造:Qodana によって生成されるレポートの構造は次のとおりです。{
インスペクションレポート
Qodana を使用すると、ローカルまたは Qodana クラウドで、インタラクティブでユーザーフレンドリーな形式でインスペクションレポートを確認できます。各レポートには次のタブが含まれています。実際の問題は、Qodana が最新のインスペクション中に検出した問題を明らかにします、ベースラインには、ベースラインとしてマークされ、それ以降修正されていない問題がリストされます。構成により、将来の使用に備えて Qodana を構成できます、ライセンス監査は
インスペクションプロファイル
インスペクションプロファイルは、インスペクション、これらのインスペクションが分析するファイルスコープ、およびインスペクションの重大度を定義します。このセクションでは、既存の Qodana プロファイルを使用する方法、独自のプロファイルを作成する方法、Qodana を使用してプロジェクトを分析するためのプロファイルを設定する方法について説明します。既存の Qodana プロファイル:すぐに使用できる Qodana プロファイルは次のとおりです。プロファイルのサブセット。Qodana ではデフォル...
PHP
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。PHP、JavaScript、TypeScript プロジェクトを分析するには、PhpStorm に基づいており、Ultimate および Ultimate Plus ライセンスで利用できる PHP リンター用の Qodana を使用できます。サポートされているテクノロジーと機能のリストを表示するには、このセクションのサポートされているテクノロジーと機能の章に移動...