Qodana 2025.2 ヘルプ

YAML ファイル

デフォルトでは、Qodana はプロジェクトのルートディレクトリに含まれる qodana.yaml ファイルから構成を読み取ります。--config オプションを使用してこのファイル名を上書きできます。カスタム構成ファイルセクションを参照してください。便宜上、このセクションではデフォルトの qodana.yaml 名を使用して参照します。

qodana.yaml で適用された構成は、デフォルトのインスペクションプロファイル設定と Qodana リンターのデフォルト構成を上書きします。これは HTML レポートセクションを使用して構成でき、すべての変更が自動的に適用されます。

qodana.yaml の JSON スキーマは、IDE での補完と基本的な検証を提供する SchemaStore(英語) プロジェクトで公開されています。

このカスタマイズした設定で以降の解析を実行するには、ファイルをプロジェクトのルートディレクトリに保存してください。または、qodana.yaml 設定ファイルを手動で編集することもできます。このセクションでは、必要な設定手順を説明します。

カスタムコマンドを実行する

qodana.yaml ファイルの bootstrap キーを使用すると、Qodana は分析を実行する前にアクションを実行できます。

apt ツールを使用して Qodana コンテナーに特定のパッケージをインストールするには、次の行を qodana.yaml ファイルに追加します。

bootstrap: apt install <package_name>

prepare-qodana.sh スクリプトファイルをプロジェクトディレクトリに保存し、qodana.yaml で実行を指定します。

bootstrap: sh ./prepare-qodana.sh

Qodana を root ユーザーとして実行するには、--user=root オプションを呼び出す必要がある場合があります。

bootstrap キーの詳細については、プロジェクトを準備するセクションを参照してください。

プロファイルを設定する

Information about existing Qodana profiles is available in the 既存の Qodana プロファイル section.

You can configure Qodana inspection profiles using the profile key, for example:

profile: inspections: - group: "category:Java/Probable bugs" enabled: true - inspection: RedundantIf enabled: true

Information about available configuration options is available in the カスタムプロファイル section.

パスを分析範囲から除外する

解析ごとにファイルとパスを除外することも、すべてのインスペクションを一括で除外することもできます。インスペクション ID に関する情報は、Inspectopedia(英語)Web サイトでご覧いただけます。

プロジェクト内のすべてのパスを分析範囲から除外するには、paths ノードを省略します。

サンプル

指定されたプロジェクトパスのすべてのインスペクションを除外します。

exclude: - name: All paths: - asm-test/src/main/java/org - asm/Visitor.java - benchmarks

指定されたプロジェクトパスの ID で指定されたインスペクションを除外します。

exclude: - name: Annotator - name: AnotherInspectionId paths: - relative/path - another/relative/path - name: All paths: - asm-test/src/main/java/org - asm - benchmarks - tools

特定のインスペクション ID は、HTML レポートのプロファイル設定、またはインスペクションプロファイルを含む .xml ファイルで見つけることができます。

インスペクションを分析範囲に含める

選択したプロファイルに含まれていないインスペクションを使用して、特定のディレクトリのファイルを Qodana に解析するよう指示できます。これは解析ごとに実行できます。プロジェクト内のすべてのパスをインスペクションのスコープに含めるには、paths ノードを省略します。インスペクション ID に関する情報は、Inspectopedia(英語) の Web サイトで入手できます。

サンプル

この例では、インスペクションを含まない empty プロファイルが指定されており、SomeInspectionId インスペクションが tools ディレクトリの分析範囲に明示的に含まれています。その結果、SomeInspectionId インスペクションによって実行されるチェック、tools ディレクトリの内容のみが Qodana の実行に含まれます。

profile: name: empty include: - name: SomeInspectionId paths: - tools

品質ゲートを設定する

品質ゲートを構成するには、いくつかのオプションがあります。

失敗しきい値を追加して、プロジェクト内の問題の合計数を制御できます。これはすべてのリンターによってサポートされています。

failThreshold: <number>

.NET の Qodana コミュニティC/C++ のための Qodana コミュニティを除くすべてのリンターでは、次の構成を使用できます。

failureConditions: severityThresholds: any: <number> # Total problems critical: <number> # Critical and other severities high: <number> moderate: <number> low: <number> info: <number> testCoverageThresholds: fresh: <number> # Fresh code coverage total: <number> # Total code coverage

この構成では、設定制限を 1 つだけ超えるとビルドが失敗します。

severityThresholds:any オプションを使用すると、問題の総数を構成できます。severityThresholds:critical などのオプションを使用すると、問題の重大度ごとに品質ゲートを構成できます。testCoverageThresholds:fresh および testCoverageThresholds:total オプションを使用すると、複数のリンターでサポートされる合計コードカバレッジと新しいコードカバレッジを構成できます。

デフォルトの実行シナリオをオーバーライドする

script: name: <script-name> parameters: <parameter>: <value>

標準の Qodana 動作をオーバーライドできます。これは PHP バージョンの移行の場合に役立ちます。この観点からコードを分析するには、php-migration シナリオを実行してください。

デフォルトでは、Qodana は default シナリオを採用します。これは、通常の Qodana がこの設定と同等に実行されることを意味します。

script: name: default

さまざまな構成オプションの例

version: 1.0 failThreshold: 0 profile: name: qodana.recommended include: - name: SomeInspectionId exclude: - name: Annotator - name: AnotherInspectionId paths: - relative/path - another/relative/path - name: All paths: - asm-test/src/main/java/org - benchmarks - tools

上の例

  • SomeInspectionId インスペクションは、プロファイルでは無効になっていますが、すべてのパスに対して明示的に有効になっています

  • Annotator インスペクションはすべてのパスで無効になります

  • AnotherInspectionId インスペクションは relative/path および another/relative/path では無効です

  • これらのパスではインスペクションは実行されません: asm-test/src/main/java/orgbenchmarkstools

リンターを指定する

linter オプションを使用すると、使用するリンターを指定できます。例:

linter: qodana-jvm-android

JDK のバージョンを設定する

これらのリンターの JDK バージョンを構成できます。

projectJDK オプションを使用して、JDK バージョンを指定します。例:

projectJDK: 11

または:

projectJDK: 1.8

次の名前を使用して JDK を指定することもできます。

projectJDK: corretto-19

JDK の構成の詳細については、「JDK 構成」セクションを参照してください。

PHP のバージョンを設定する

PHP 用の Qodana リンターを実行する前に、PHP バージョンを構成できます。

php: version: "X.x"

健全性チェックを無効にする

デフォルトでは、Qodana では健全性チェックが有効になっています。次のスニペットを使用して無効にできます。

disableSanityInspections: true

ライセンス監査を構成する

Qodana のバージョン 2024.1 以降では、ライセンス監査機能がデフォルトで有効になっています。CheckDependencyLicenses インスペクションを除外することで無効にすることができます。

exclude: - name: CheckDependencyLicenses

依存関係を無視する

依存関係を無視して、関連する問題をレポートから非表示にします。

dependencyIgnores: - name: "enry"

ここで、name は無視する依存関係の名前です。

上の例では、enry 依存関係が分析から完全に除外されています。考えられるライセンス関連の問題は無視されるため、依存関係はレポートにまったく含まれません。これは、レポートでメンションする必要のない内部依存関係をすばやく非表示にできます。

ライセンスを許可または禁止する

事前定義されたライセンス互換性マトリックスをオーバーライドします。

licenseRules: - keys: - "PROPRIETARY-LICENSE" - "MIT" prohibited: - "BSD-3-CLAUSE-NO-CHANGE" allowed: - "ISC" - keys: [ "Apache-2.0" ] prohibited: - "MIT"

この構成では、keys はプロジェクトライセンスであり、依存ライセンスの識別子は allowed または prohibited で指定されます。

依存関係ライセンスをオーバーライドする

依存関係ライセンス識別子をオーバーライドします。

dependencyOverrides: - name: "jaxb-runtime" version: "2.3.1" url: "https://github.com/javaee/jaxb-v2" licenses: - key: "CDDL-1.1" url: "https://github.com/javaee/jaxb-v2/blob/master/LICENSE" - key: "GPL-2.0-with-classpath-exception" url: "https://github.com/javaee/jaxb-v2/blob/master/LICENSE"

ここで、name は依存関係の名前、version は依存関係のバージョン、licenses は再定義された依存関係ライセンスのリストです。

上の例では、CDDL-1.1、クラスパス例外付きの GPL-2.0 を検出し、jaxb-runtime の他のライセンス (2.3.1 のみ) を検出しないように Qodana に「指示」しています。これは、依存関係がデュアルライセンスであり、一部のライセンスを省略したい場合、依存関係ソースからライセンスを正しく検出できない場合に便利です。

カスタム依存関係

現在、Qodana によるライセンス監査は、JPS、Maven、Gradle、npm、yarn、composer プロジェクトでのみ可能です。レポートに記載する必要があるがプロジェクトソースからは検出できない依存関係を含めるには、customDependencies を使用して指定します。

customDependencies: - name: ".babelrc JSON Schema (.babelrc-schema.json)" version: "JSON schema for Babel 6+ configuration files" licenses: - key: "Apache-2.0" url: "https://github.com/SchemaStore/schemastore/blob/master/LICENSE"

クイックフィックスを構成する

fixesStrategy オプションを使用すると、利用可能なクイックフィックス戦略の中から選択できます。

fixesStrategy: cleanup/apply

汚染分析を構成する

qodana.yaml ファイルで、PhpVulnerablePathsInspection インスペクションを分析範囲に含めます

include: - name: PhpVulnerablePathsInspection

qodana.yaml ファイルで、JvmTaintAnalysis インスペクションを分析範囲に含めます

include: - name: JvmTaintAnalysis

脆弱性チェッカーを構成する

脆弱性チェッカー機能の使用を開始するには、VulnerableLibrariesGlobal インスペクションを有効にします。

include: - name: VulnerableLibrariesLocal

プラグインの管理

インスペクション中にダウンロードして呼び出すプラグインを指定できます。

plugins: - id: <plugin.id>

ここで、<plugin-id>JetBrains マーケットプレイス(英語)のプラグイン ID を表します。例: Grazie Professional(英語) の場合、プラグイン ID は com.intellij.grazie.pro になります。プラグイン ID を見つけるには、プラグインページで概要タブをクリックし、追加情報セクションに移動します。

プラグインキャッシュは /data/cache/plugins ディレクトリに保存されます。

プラグインに必要なサードパーティソフトウェアをインストールするには、次の方法があります。

  • bootstrap キーを使用します。

  • FROM jetbrains/qodana... で始まるカスタム Dockerfile を開発します。GitHub(英語) で利用可能な Qodana Dockerfile の例を使用できます。

不適切な書式インスペクション

IncorrectFormatting (英語) インスペクションは、ファイルに含まれる複数のフォーマットエラーを、個別に表示するのではなく、1 つの問題として統合します。ファイルごとに 1 つの問題がサンプルスニペットとともに表示されるため、問題をより迅速に解決できます。

この機能は、C/C++ 用の Qodana、C/C++ 用の Qodana Community、および .NET 用の Qodana Community を除くすべてのリンターで使用できます。

使用を開始するには、Qodana インスペクションプロファイル構成で IncorrectFormatting インスペクションを有効にします。例:

include: - name: IncorrectFormatting

CMake プリセットを指定する

CMake プリセットを使用して、Qodana を C/C++ リンター用にカスタマイズします。cpp および cmakePreset オプションを使用してプリセットを呼び出します。

cpp: cmakePreset: my-qodana-preset

ネイティブモードを構成する

リンターを指定して withinDocker オプションを false に設定することで、ネイティブモードを構成できます。例:

linter: qodana-dotnet withinDocker: false

ネイティブモードは現在、次の Qodana リンターで利用できます。

リンター名

説明

qodana-jvm

JVM 用 Qodana

qodana-jvm-community

JVM の Qodana コミュニティ

qodana-php

PHP 用の Qodana

qodana-js

JS 用 Qodana

qodana-dotnet

.NET 用 Qodana

qodana-go

Go 用 Qodana

qodana-python

Python 用 Qodana

qodana-python-community

Python のための Qodana コミュニティ

2025 年 12 月 10 日

関連ページ:

構成オプション

このセクションでは、Docker、GitHub アクション、GitLab CI/CD などの実行に使用されるツールの構成を使用して、Qodana リンターを構成する方法について説明します。多くの場合、このセクションで説明する設定は、このセクションでも説明するファイル経由で構成することもできます。オプションの種類:Qodana は、以下に示す 3 種類のオプションを使用して設定できます。オプション名とその引数の間に等号 () が必要ですオプション名とその引数の間にスペース文字 () が必要です引...

分析レポート

Qodana を使用すると、ローカルまたは Qodana クラウドでインタラクティブかつユーザーフレンドリーな形式で分析レポートを確認できます。レポート UI の概要:各レポートには次のタブが含まれています。実際の問題は、最新のインスペクション中に Qodana が検出した問題を明らかにします。ベースラインには、ベースラインとしてマークされ、それ以降修正されていない問題がリストされます。構成により、Qodana を将来の使用のために構成できます。ライセンス監査

インスペクションプロファイルの概要

インスペクションプロファイルは、インスペクション、これらのインスペクションが分析するファイルスコープ、およびインスペクションの重大度を定義します。このセクションでは、既存の Qodana プロファイルを使用する方法、独自のプロファイルを作成する方法、Qodana を使用してプロジェクトを分析するためのプロファイルを設定する方法について説明します。既存の Qodana プロファイル:すぐに使用できる Qodana プロファイルは次のとおりです。プロファイルのサブセット。Qodana ではデフォル...

.NET

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。.NET プロジェクトを分析するには、次の Qodana リンターを使用できます。リンター名 Docker イメージ * ベースとなるもの JetBrains Rider ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 C#、C/C++、VB.NET、J...

C / C++

C/C++ ファミリのリンターは、CMake などの一般的なビルドシステムをサポートするか、ファイルを提供する C および C++ プロジェクトを解析できます。この機能を提供するリンターは 2 種類あります。リンター名 Docker イメージ * ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法 Docker イメージサポート CLion が提供するインスペクションのフルセット:Clang-Tidy インスペクションは Qodana コミュニティによって C/...

PHP バージョンの移行

ある PHP バージョンから別のバージョンへの移行がコードの品質にどのような影響を与えるかを確認するには、Qodana シナリオを使用します。このシナリオを実行すると、新しい PHP バージョンにアップグレードした後に発生するコードベースの問題を確認できます。この機能は PHP リンターによってサポートされており、Ultimate および Ultimate Plus ライセンスとその試用版で利用できます。このシナリオは、ファイルで構成することも、CLI を使用して呼び出すこともできます。script:...