Qodana 2025.3 ヘルプ

クオリティゲート

高品質のゲートは、コードの品質を制御し、期待される品質を満たすソフトウェアを構築できるようにする手法です。品質ゲート条件が失敗すると、Qodana は終了コード 255 を使用して終了し、CI/CD ワークフローまたはパイプラインが失敗します。例: プロジェクトの品質ゲートが 10 個の問題に設定され、コードカバレッジが 40% に設定されている場合、Qodana が 11 個目の問題またはコードカバレッジが 40% のしきい値を下回っていることが検出されると、ビルドワークフローは失敗します。

品質ゲートしきい値、および失敗しきい値という用語は、同じ意味で使用されます。

以下の表で説明するように、プロジェクトの問題の総数に対して 1 つの品質ゲート、個別の問題の重大度ごとに複数の品質ゲート、およびコードカバレッジのしきい値を構成できます。

クオリティゲートタイプ

リンターのサポート

ライセンスに基づいて利用可能

総問題数

すべてのリンター

コミュニティ、Ultimate、Ultimate プラス

重大度固有の問題

.NET の Qodana コミュニティを除くすべてのリンター

リンターに応じた Community、Ultimate、Ultimate Plus ライセンス

コードカバレッジのしきい値

JVM 用 QodanaAndroid 用 QodanaJS 用 QodanaPHP 用の Qodana.NET 用 QodanaPython 用 QodanaGo 用 Qodana

Ultimate と Ultimate Plus

品質ゲートの仕組み

Qodana は次のルールに従います。

  • プロジェクトの問題の総数が A である場合、プロジェクト内で A の問題が見つかると、実行は成功します。A+1 の問題が見つかると、実行は失敗します。

  • 重大度別の問題の数または B を考慮すると、特定の重大度の B 問題が見つかった場合、実行は成功します。B+1 の問題が見つかると、実行は失敗します。

  • コードカバレッジしきい値 C を指定すると、C% 行がカバーされると、実行は成功します。C-1% のみがカバーされている場合、実行は失敗します。

総問題数

すべての Qodana リンターのプロジェクトの問題の総数に対して品質ゲートを構成できます。

これは、すべてのリンターでサポートされる基本的な qodana.yaml 構成です。

failThreshold: <number>

あるいは、.NET の Qodana コミュニティを除くすべてのリンターは severityThresholds.any オプションをサポートします。

failureConditions:   severityThresholds:     any: <number-of-project-problems>
qodana scan \   -e QODANA_TOKEN="<cloud-project-token>" \   --fail-threshold <number>

このコマンドでは、--fail-threshold <number> オプションで品質ゲートを構成します。QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。

docker run \   -v <source-directory>/:/data/project/ \   -e QODANA_TOKEN="<cloud-project-token>" \   jetbrains/qodana-<image> \   --fail-threshold <number>

このコマンドでは、<source-directory> はプロジェクトソースコードへの完全なローカルパスであり、--fail-threshold <number> オプションは品質ゲートを構成します。QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。

品質ゲートが失敗した場合にプルリクエストのマージをブロックするように GitHub を設定できます。これを行うには、次のようにブランチ保護ルール(英語)を作成します。

  1. Qodana スキャン(英語)アクションを呼び出す新しい GitHub Actions ワークフローを作成するか、既存のワークフローを開きます。

  2. main ブランチを対象とする pull_request イベントで実行されるようにワークフローを設定します。

    name: Qodana on:   pull_request:     branches:       - main jobs:   qodana:     runs-on: ubuntu-latest     permissions:       contents: write       pull-requests: write       checks: write     steps:       - uses: actions/checkout@v3         with:           ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit           fetch-depth: 0 # a full history is required for pull request analysis       - name: 'Qodana Scan'         uses: JetBrains/qodana-action@v2025.2         env:           QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}

    main の代わりに、ここで希望のブランチを指定できます。QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。

  3. Qodana アクション fail-threshold オプションの失敗しきい値 (数値) を設定します。

  4. リポジトリ名にある設定をクリックします。

  5. 左側のメニューでブランチをクリックします。

  6. ブランチ保護ルールセクションで、ルールの追加をクリックします。

  7. mainブランチ名前パターンに追加します。

  8. マージ前にステータスチェックに合格する必要があるを選択します。

  9. Qodana ステータスチェックを検索して確認してください。

  10. 作成をクリックします。

Jenkins パイプラインでクオリティゲートを設定するには、steps ブロックに --fail-threshold <number> オプションを追加します。

pipeline {    environment {       QODANA_TOKEN=credentials('qodana-token')    }    agent {       docker {          args '''             -v <path-to-project>:/data/project             --entrypoint=""          '''          image 'jetbrains/qodana-<image>'       }    }    stages {       stage('Qodana') {          steps {             sh '''                qodana \                --fail-threshold <number>             '''          }       }    } }

このスニペットの QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要な qodana-token 資格情報に含まれるプロジェクトトークンを参照します。

GitLab CI/CD パイプラインで品質ゲートを実行するには、この構成を .gitlab-ci.yml ファイルに保存します。

include: - component: $CI_SERVER_FQDN/qodana/qodana/qodana-gitlab-ci@v2025.2 inputs: args: | --fail-threshold,<number-of-accepted-problems>, --image,<image>

このサンプルでは、inputs セクションで --fail-threshold <number> オプションを指定し、Qodana リンターを参照する --image オプションを指定します。

重大度固有の問題

.NET の Qodana コミュニティを除くすべてのリンターでは、問題の重大度ごとに個別の品質ゲートを構成できます。設定制限を 1 つだけ超えると、問題の総数も含めてビルドが失敗します。

qodana.yaml 重大度の構成は次のとおりです。

failureConditions:   severityThresholds:     any: <number> # Total problems     critical: <number> # Critical and other severities     high: <number>     moderate: <number>     low: <number>     info: <number>

コードカバレッジのしきい値

JVM 用 QodanaJS 用 QodanaPHP 用の Qodana.NET 用 QodanaPython 用 QodanaGo 用 Qodana リンターの合計コードカバレッジしきい値とフレッシュコードカバレッジしきい値を構成できます。

qodana.yaml 構成サンプルは次のとおりです。

failureConditions:   testCoverageThresholds:     fresh: <number> # Fresh code coverage     total: <number> # Total code coverage
2025 年 8 月 18 日

関連ページ:

よくある質問

ここでは、Qodana の基本概念をより深く理解するのに役立つ質問への回答をまとめています。一般的な質問:Qodana を実行するにはどうすればよいですか ? ニーズに応じて、次を使用して Qodana を実行できます。CI パイプライン、JetBrains IDE、Qodana CLI ツール、または利用可能な Docker イメージ、ネイティブモードは、JVM 用 Qodana、JVM の Qodana コミュニティ、PHP 用の Qodana、JS 用 Qodana、.NET 用 Qodana...

コードカバレッジ

コードカバレッジは、生成されたレポートを使用して、メソッド、クラス、ファイル内の全体的なコードカバレッジを計算します。また、これらのエンティティのカバレッジ不足に関連する問題についてもレポートします。この機能は、次のリンターの Ultimate および Ultimate Plus ライセンスで利用できます。JVM 用 QodanaIntelliJ IDEA コードカバレッジエージェントが推奨ツールです JaCoCoJS 用 QodanaJestPHP 用の QodanaPhpUnit.NET 用 Q...

.NET

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

Java、Kotlin、Groovy

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

JavaScript and TypeScript

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。JavaScript および TypeScript プロジェクトを解析するには、以下の特徴を持つ Qodana for JS リンターを使用できます。リンター名 Docker イメージベースとなるもの WebStorm ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメー...

PHP

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。PHP プロジェクトを解析するには、以下の特徴を持つ Qodana for PHP リンターを使用できます。リンター名 Docker イメージベースとなるもの PhpStorm ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 PHP、JavaScr...