YAML ファイル
デフォルトでは、Qodana はプロジェクトのルートディレクトリに含まれる qodana.yaml ファイルから構成を読み取ります。--config オプションを使用してこのファイル名を上書きできます。カスタム構成ファイルセクションを参照してください。便宜上、このセクションではデフォルトの qodana.yaml 名を使用して参照します。
qodana.yaml で適用された構成は、デフォルトのインスペクションプロファイル設定と Qodana リンターのデフォルト構成を上書きします。これは HTML レポートセクションを使用して構成でき、すべての変更が自動的に適用されます。
qodana.yaml の JSON スキーマは、IDE での補完と基本的な検証を提供する SchemaStore(英語) プロジェクトで公開されています。
このカスタマイズした設定で後続の解析を実行するには、ファイルをプロジェクトのルートディレクトリに保存してください。または、qodana.yaml 設定ファイルを直接編集することもできます。このセクションでは、必要な設定手順について説明します。
カスタムコマンドを実行する
解析中に、Qodana リンターは、JVM、.NET、Golang に関連するリンターがビルドシステムとプロジェクト構造を自動的に把握しようと試みるにもかかわらず、一部のインスペクションがクラス、パッケージ、ファイルを見つけられない、参照を解決できないと報告する場合があります。このような場合、Qodana には少し手サポートが必要です。
サードパーティのパッケージまたはライブラリをインストールする
ビルド環境をセットアップするプログラムを実行する
これらの操作は bootstrap キーを使用して実行されます。
IDE で構文のハイライトと検証を使用できるようにするには、prepare-qodana.sh シェルスクリプトを作成し、プロジェクトのルートディレクトリに保存します。
bootstrap キーを使用して、Qodana Docker コンテナーでスクリプトを実行します。
Qodana を root ユーザーとして実行するには、--user=root オプションを呼び出す必要がある場合があります。
プロファイルを設定する
既存の Qodana プロファイルに関する情報は、既存の Qodana プロファイルセクションで入手できます。
profile キーを使用して、Qodana インスペクションプロファイルを設定できます。例:
利用可能な構成オプションに関する情報は、カスタムプロファイルセクションで参照できます。
パスを分析範囲から除外する
解析ごとにファイルとパスを除外することも、すべてのインスペクションを一括で除外することもできます。インスペクション ID に関する情報は、Inspectopedia(英語)Web サイトでご覧いただけます。
プロジェクト内のすべてのパスを分析範囲から除外するには、paths ノードを省略します。
サンプル
指定されたプロジェクトパスのすべてのインスペクションを除外します。
指定されたプロジェクトパスの ID で指定されたインスペクションを除外します。
特定のインスペクション ID は、HTML レポートのプロファイル設定、またはインスペクションプロファイルを含む .xml ファイルで見つけることができます。
解析範囲にインスペクションを含める
選択したプロファイルに含まれていないインスペクションを使用して、特定のディレクトリのファイルを Qodana に解析するよう指示できます。これは解析ごとに実行できます。プロジェクト内のすべてのパスをインスペクションのスコープに含めるには、paths ノードを省略します。インスペクション ID に関する情報は、Inspectopedia(英語) の Web サイトで入手できます。
サンプル
この例では、インスペクションを含まない empty プロファイルが指定されており、SomeInspectionId インスペクションが tools ディレクトリの分析範囲に明示的に含まれています。その結果、SomeInspectionId インスペクションによって実行されるチェック、tools ディレクトリの内容のみが Qodana の実行に含まれます。
特定のファイルに対して特定のインスペクションを無効にする
特定のファイルに対してインスペクションを無効にするには、次の構成を含む qodana.yaml ファイルをプロジェクトルートに保存します。
クラスの上に noinspection コメントを追加することで、クラスに対してのみインスペクションを抑制することもできます。
品質ゲートを設定する
品質ゲートを構成するには、いくつかのオプションがあります。
失敗しきい値を追加して、プロジェクト内の問題の合計数を制御できます。これはすべてのリンターによってサポートされています。
.NET の Qodana コミュニティと C/C++ のための Qodana コミュニティを除くすべてのリンターでは、次の構成を使用できます。
この構成では、設定制限を 1 つだけ超えるとビルドが失敗します。
severityThresholds:any オプションを使用すると、問題の総数を構成できます。severityThresholds:critical などのオプションを使用すると、問題の重大度ごとに品質ゲートを構成できます。testCoverageThresholds:fresh および testCoverageThresholds:total オプションを使用すると、複数のリンターでサポートされる合計コードカバレッジと新しいコードカバレッジを構成できます。
デフォルトの実行シナリオをオーバーライドする
標準の Qodana 動作をオーバーライドできます。これは PHP バージョンの移行の場合に役立ちます。この観点からコードを分析するには、php-migration シナリオを実行してください。
デフォルトでは、Qodana は default シナリオを採用します。これは、通常の Qodana がこの設定と同等に実行されることを意味します。
さまざまな構成オプションの例
上の例
SomeInspectionIdインスペクションは、プロファイルでは無効になっていますが、すべてのパスに対して明示的に有効になっていますAnnotatorインスペクションはすべてのパスで無効になりますAnotherInspectionIdインスペクションはrelative/pathおよびanother/relative/pathでは無効ですこれらのパスではインスペクションは実行されません:
asm-test/src/main/java/org、benchmarks、tools
リンターを指定する
linter オプションを使用すると、使用するリンターを指定できます。例:
プロジェクト内のディレクトリを指定する
onlyDirectory オプションを使用して、プロジェクト内の解析対象ディレクトリを指定します。これはプロジェクトルートからの相対パスで指定する必要があります。例:
これは、モノレポプロジェクトを分析するときに役立ちます。
JDK のバージョンを設定する
これらのリンターの JDK バージョンを構成できます。
projectJDK オプションを使用して、JDK バージョンを指定します。例:
または:
次の名前を使用して JDK を指定することもできます。
JDK の構成の詳細については、「JDK の設定」セクションを参照してください。
PHP のバージョンを設定する
PHP 用の Qodana リンターを実行する前に、PHP バージョンを構成できます。
健全性チェックを無効にする
デフォルトでは、Qodana では健全性チェックが有効になっています。次のスニペットを使用して無効にできます。
ライセンス監査を構成する
Qodana のバージョン 2024.1 以降では、ライセンス監査機能がデフォルトで有効になっています。 CheckDependencyLicenses (英語) インスペクションを除外することで、この機能を無効にできます。
依存関係を無視する
依存関係を無視して、関連する問題をレポートから非表示にします。
ここで、name は無視する依存関係の名前です。
上の例では、enry 依存関係が分析から完全に除外されています。考えられるライセンス関連の問題は無視されるため、依存関係はレポートにまったく含まれません。これは、レポートでメンションする必要のない内部依存関係をすばやく非表示にできます。
ライセンスを許可または禁止する
事前定義されたライセンス互換性マトリックスをオーバーライドします。
この構成では、keys はプロジェクトライセンスであり、依存ライセンスの識別子は allowed または prohibited で指定されます。
依存関係ライセンスをオーバーライドする
依存関係ライセンス識別子をオーバーライドします。
ここで、name は依存関係の名前、version は依存関係のバージョン、licenses は再定義された依存関係ライセンスのリストです。
上の例では、CDDL-1.1、クラスパス例外付きの GPL-2.0 を検出し、jaxb-runtime の他のライセンス (2.3.1 のみ) を検出しないように Qodana に「指示」しています。これは、依存関係がデュアルライセンスであり、一部のライセンスを省略したい場合、依存関係ソースからライセンスを正しく検出できない場合に便利です。
カスタム依存関係
現在、Qodana によるライセンス監査は、JPS、Maven、Gradle、npm、yarn、composer プロジェクトでのみ可能です。レポートに記載する必要があるがプロジェクトソースからは検出できない依存関係を含めるには、customDependencies を使用して指定します。
クイックフィックスを構成する
fixesStrategy オプションを使用すると、利用可能なクイックフィックス戦略の中から選択できます。
汚染分析を構成する
qodana.yaml ファイルにおいて、 PhpVulnerablePathsInspection (英語) インスペクションを解析範囲に含める。
qodana.yaml ファイルで、JvmTaintAnalysis インスペクションを分析範囲に含めます。
脆弱性チェッカーを構成する
脆弱性チェッカー機能の使用を開始するには、 VulnerableLibrariesGlobal (英語) インスペクションを有効にしてください。
プラグインの管理
インスペクション中にダウンロードして呼び出すプラグインを指定できます。
ここで、<plugin-id> は JetBrains マーケットプレイス(英語)のプラグイン ID を表します。例: Grazie Professional(英語) の場合、プラグイン ID は com.intellij.grazie.pro になります。プラグイン ID を見つけるには、プラグインページで概要タブをクリックし、追加情報セクションに移動します。
プラグインキャッシュは /data/cache/plugins ディレクトリに保存されます。
プラグインに必要なサードパーティソフトウェアをインストールするには、次の方法があります。
bootstrapキーを使用します。FROM jetbrains/qodana...で始まるカスタムDockerfileを開発します。GitHub(英語) で利用可能な QodanaDockerfileの例を使用できます。
不適切な書式インスペクション
IncorrectFormatting (英語) インスペクションは、ファイルに含まれる複数のフォーマットエラーを、個別に表示するのではなく、1 つの問題として統合します。ファイルごとに 1 つの問題がサンプルスニペットとともに表示されるため、問題をより迅速に解決できます。
この機能は、C/C++ 用の Qodana、C/C++ 用の Qodana Community、および .NET 用の Qodana Community を除くすべてのリンターで使用できます。
使用を開始するには、Qodana インスペクションプロファイル構成で IncorrectFormatting (英語) インスペクションを有効にします。例:
CMake プリセットを指定する
CMake プリセットを使用して、Qodana を C/C++ リンター用にカスタマイズします。cpp および cmakePreset オプションを使用してプリセットを呼び出します。
ネイティブモードを構成する
リンターを指定して withinDocker オプションを false に設定することで、ネイティブモードを構成できます。例:
ネイティブモードは現在、次の Qodana リンターで利用できます。
リンター名 | 説明 |
|---|---|
| |
| |
| |
| |
| |
| |
| |
|
モノレポで Java および Kotlin プロジェクトを構成する
rootJavaProjects キーを使用すると、分析に含めるプロジェクトを指定できます。例:
デフォルトでは、Qodana はサブディレクトリからプロジェクトを再帰的に収集し、分析のためにインポートします。この変更により、増分分析が可能になり、分析対象プロジェクトと VCS ルートが異なるプロジェクトでも修正が行われます。
関連ページ:
構成オプション
このセクションでは、Docker、GitHub アクション、GitLab CI/CD などの実行に使用されるツールの構成を使用して、Qodana リンターを構成する方法について説明します。多くの場合、このセクションで説明する設定は、このセクションでも説明するファイル経由で構成することもできます。オプションの種類:Qodana は、以下に示す 3 種類のオプションを使用して設定できます。オプション名とその引数の間に等号 () が必要ですオプション名とその引数の間にスペース文字 () が必要です引...
分析レポート
Qodana を使用すると、ローカルまたは Qodana クラウドでインタラクティブかつユーザーフレンドリーな形式で分析レポートを確認できます。レポート UI の概要:各レポートには次のタブが含まれています。現在の問題点は、最新のインスペクション中に Qodana が検出した問題を明らかにします。基本的な問題点は、ベースラインとしてマークされ、それ以降修正されていない問題点を一覧にしたものです。インスペクションを使用すると、Qodana を将来使用するために設定できます。
Java、Kotlin、Groovy
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。Java プロジェクトを分析するには、次のリンターを使用できます。リンター名 Docker イメージベースとなるもの IntelliJ IDEA Ultimate ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 Java、Kotlin、Groovy、...
.NET
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。.NET プロジェクトを分析するには、次の Qodana リンターを使用できます。リンター名 Docker イメージ * ベースとなるもの JetBrains Rider ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 C#、C/C++、VB.NET、J...
Go
すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。Golang プロジェクトを解析するには、以下の特徴を持つ Go 用 Qodana リンターを使用できます。リンター名 Docker イメージベースとなるもの GoLand ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 Golang、JavaSc...
ベースライン
ベースラインは、特定の Git ブランチの特定の Qodana 実行時に取得され、ファイルに含まれるコードベースの問題のスナップショットです。ベースライン機能を使用すると、現在のコードとベースラインの状態を比較し、新規の問題、変更されていない問題、解決済みの問題を確認できます。たとえば、ブランチのベースラインを設定・更新することで、プルリクエストやマージリクエストのマージ後の変更を監視できます。必要に応じて、新しいファイルを生成し、Qodana の実行中に使用することで、ベースラインを更新できま...