クオリティゲート
高品質のゲートは、コードの品質を制御し、期待される品質を満たすソフトウェアを構築できるようにする手法です。品質ゲート条件が失敗すると、Qodana は終了コード 255 を使用して終了し、CI/CD ワークフローまたはパイプラインが失敗します。例: プロジェクトの品質ゲートが 10 個の問題に設定され、コードカバレッジが 40% に設定されている場合、Qodana が 11 個目の問題またはコードカバレッジが 40% のしきい値を下回っていることが検出されると、ビルドワークフローは失敗します。
品質ゲート、しきい値、および失敗しきい値という用語は、同じ意味で使用されます。
以下の表で説明するように、プロジェクトの問題の総数に対して 1 つの品質ゲート、個別の問題の重大度ごとに複数の品質ゲート、およびコードカバレッジのしきい値を構成できます。
クオリティゲートタイプ | リンターのサポート | ライセンスに基づいて利用可能 |
---|---|---|
すべてのリンター | コミュニティ、Ultimate、Ultimate プラス | |
.NET の Qodana コミュニティを除くすべてのリンター | リンターに応じた Community、Ultimate、Ultimate Plus ライセンス | |
JVM 用 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 アクションワークフローを作成するか、既存のワークフローを開きます。
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@v2024.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
ファイルに保存します。
このサンプルでは、script
セクションで --fail-threshold <number>
オプションを指定します。このスニペットの QODANA_TOKEN
変数は、Ultimate と Ultimate Plus リンターに必要なプロジェクトトークンを参照します。
重大度固有の問題
.NET の Qodana コミュニティを除くすべてのリンターでは、問題の重大度ごとに個別の品質ゲートを構成できます。設定制限を 1 つだけ超えると、問題の総数も含めてビルドが失敗します。
qodana.yaml
重大度の構成は次のとおりです。
コードカバレッジのしきい値
JVM 用 Qodana、JS 用 Qodana、PHP 用の Qodana、.NET 用 Qodana、Python 用 Qodana、Go 用 Qodana リンターの合計コードカバレッジしきい値とフレッシュコードカバレッジしきい値を構成できます。
qodana.yaml
構成サンプルは次のとおりです。
関連ページ:
![](https://pleiades.io/icons/jetbrains_logo.png)
よくある質問
ここでは、Qodana の基本概念をより深く理解するのに役立つ質問への回答をまとめています。一般的な質問:Qodana を実行するにはどうすればよいですか ? ニーズに応じて、次を使用して Qodana を実行できます。CI パイプライン、JetBrains IDE、Qodana CLI ツール、または利用可能な Docker イメージ、ネイティブモードは .NET 用 Qodana リンターで利用可能、Qodana を <CI/CD 名> パイプラインに構築するにはどうすればよいですか ?...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/code-coverage-report-qodana.png)
コードカバレッジ
コードカバレッジは、生成されたレポートを使用して、メソッド、クラス、ファイル内の全体的なコードカバレッジを計算します。また、これらのエンティティにおけるカバレッジの不足に関連する問題についても報告します。この機能は、次のリンターの Ultimate および Ultimate Plus ライセンスで利用できます。JVM 用 QodanaIntelliJ IDEA コードカバレッジエージェントが推奨ツールですが推奨される形式です。もサポートされています。JaCoCoJS 用 QodanaJestPHP...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/baseline-enabled.png)
ベースライン
ベースラインは、特定の Qodana 実行時に取得され、ファイルに含まれているコードベースの問題のスナップショットです。ベースライン機能を使用すると、現在のコードとベースラインの状態を比較し、新しい問題、変更されていない問題、解決された問題を確認できます。この機能は、Community、Ultimate、Ultimate Plus ライセンスとその試用版で利用可能なすべてのリンターでサポートされています。使い方:ベースラインなしで Qodana を実行すると、現在の実行時に検出された問題を確認...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/gitlab-exposed-artifacts-expanded.png)
GitLab CI/CD
GitLab CI/CD は、さまざまな CI/CD 手法を使用するソフトウェア開発用のツールです。このセクションでは、GitLab CI/CD パイプライン内で QodanaDocker イメージを実行する方法について説明し、次のケースについて説明します。特定のブランチおよびマージリクエストのインスペクション、インスペクションレポートを Qodana クラウドに転送する、GitLab CI/CD ユーザーインターフェースでの Qodana レポートの公開、品質ゲートとベースライン機能の使用、コード品...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/language-migration.png)
PHP バージョンの移行
ある PHP バージョンから別のバージョンへの移行がコードの品質にどのような影響を与えるかを確認するには、Qodana シナリオを使用します。このシナリオを実行すると、新しい PHP バージョンにアップグレードした後に発生するコードベースの問題を確認できます。この機能は PHP 用の Qodana リンターによってサポートされており、Ultimate および Ultimate Plus ライセンスとその試用版で利用できます。このシナリオは、ファイルで構成することも、CLI を使用して呼び出すこともでき...