クオリティゲート
高品質のゲートは、コードの品質を制御し、期待される品質を満たすソフトウェアを構築できるようにする手法です。品質ゲート条件が失敗すると、Qodana は終了コード 255 を使用して終了し、CI/CD ワークフローまたはパイプラインが失敗します。例: プロジェクトの品質ゲートが 10 個の問題に設定され、コードカバレッジが 40% に設定されている場合、Qodana が 11 個目の問題またはコードカバレッジが 40% のしきい値を下回っていることが検出されると、ビルドワークフローは失敗します。
品質ゲート、しきい値、および失敗しきい値という用語は、同じ意味で使用されます。
以下の表で説明するように、プロジェクトの問題の総数に対して 1 つの品質ゲート、個別の問題の重大度ごとに複数の品質ゲート、およびコードカバレッジのしきい値を構成できます。
クオリティゲートタイプ | リンターのサポート | ライセンスに基づいて利用可能 |
|---|---|---|
すべてのリンター | コミュニティ、Ultimate、Ultimate プラス | |
.NET の Qodana コミュニティを除くすべてのリンター | リンターに応じた Community、Ultimate、Ultimate Plus ライセンス | |
JVM 用 Qodana、Android 用 Qodana、JS 用 Qodana、PHP 用の Qodana、.NET 用 Qodana、Python 用 Qodana、Go 用 Qodana | Ultimate と Ultimate Plus |
品質ゲートの仕組み
Qodana は次のルールに従います。
プロジェクトの問題の総数が A である場合、プロジェクト内で A の問題が見つかると、実行は成功します。A+1 の問題が見つかると、実行は失敗します。
重大度別の問題の数または B を考慮すると、特定の重大度の B 問題が見つかった場合、実行は成功します。B+1 の問題が見つかると、実行は失敗します。
コードカバレッジしきい値 C を指定すると、C% 行がカバーされると、実行は成功します。C-1% のみがカバーされている場合、実行は失敗します。
総問題数
すべての Qodana リンターのプロジェクトの問題の総数に対して品質ゲートを構成できます。
これは、すべてのリンターでサポートされる基本的な qodana.yaml 構成です。
あるいは、.NET の Qodana コミュニティを除くすべてのリンターは severityThresholds.any オプションをサポートします。
このコマンドでは、--fail-threshold <number> オプションで品質ゲートを構成します。QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。
このコマンドでは、<source-directory> はプロジェクトソースコードへの完全なローカルパスであり、--fail-threshold <number> オプションは品質ゲートを構成します。QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。
品質ゲートが失敗した場合にプルリクエストのマージをブロックするように GitHub を設定できます。これを行うには、次のようにブランチ保護ルール(英語)を作成します。
Qodana スキャン(英語)アクションを呼び出す新しい GitHub Actions ワークフローを作成するか、既存のワークフローを開きます。
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@v2026.1 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}mainの代わりに、ここで希望のブランチを指定できます。QODANA_TOKEN変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。Qodana アクション
fail-thresholdオプションの失敗しきい値 (数値) を設定します。リポジトリ名にあるをクリックします。
左側のメニューでをクリックします。
ブランチ保護ルールセクションで、をクリックします。
mainをに追加します。を選択します。
ステータスチェックを検索して確認してください。
をクリックします。
Jenkins パイプラインでクオリティゲートを設定するには、steps ブロックに --fail-threshold <number> オプションを追加します。
このスニペットの QODANA_TOKEN 変数は、Ultimate と Ultimate Plus リンターに必要な qodana-token 資格情報に含まれるプロジェクトトークンを参照します。
GitLab CI/CD パイプラインで品質ゲートを実行するには、この構成を .gitlab-ci.yml ファイルに保存します。
このサンプルでは、inputs セクションで --fail-threshold <number> オプションを指定し、Qodana リンターを参照する --image オプションを指定します。
重大度固有の問題
.NET の Qodana コミュニティを除くすべてのリンターでは、問題の重大度ごとに個別の品質ゲートを構成できます。設定制限を 1 つだけ超えると、問題の総数も含めてビルドが失敗します。
qodana.yaml 重大度の構成は次のとおりです。
コードカバレッジのしきい値
JVM 用 Qodana、JS 用 Qodana、PHP 用の Qodana、.NET 用 Qodana、Python 用 Qodana、Go 用 Qodana リンターの合計コードカバレッジしきい値とフレッシュコードカバレッジしきい値を構成できます。
qodana.yaml 構成サンプルは次のとおりです。
関連ページ:
分析レポート
Qodana を使用すると、ローカルまたは Qodana クラウドでインタラクティブかつユーザーフレンドリーな形式で分析レポートを確認できます。レポート UI の概要:各レポートには次のタブが含まれています。現在の問題点は、最新のインスペクション中に Qodana が検出した問題を明らかにします。基本的な問題点は、ベースラインとしてマークされ、それ以降修正されていない問題点を一覧にしたものです。インスペクションを使用すると、Qodana を将来使用するために設定できます。
コードカバレッジ
コードカバレッジは、生成されたレポートを使用して、メソッド、クラス、ファイル内の全体的なコードカバレッジを計算します。また、これらのエンティティのカバレッジ不足に関連する問題についてもレポートします。コードカバレッジレポートは、Qodana Ultimate および Qodana Ultimate Plus ライセンスでご利用いただけます。Qodana ライセンスの詳細については、サブスクリプションのオプションと価格ページを参照してください。デモのご依頼も承っております。この機能は以下のリンターで...
.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...