Qodana 2024.1 ヘルプ

GitLab CI/CD

GitLab CI/CD(英語) は、さまざまな CI/CD 手法を使用するソフトウェア開発用のツールです。このセクションでは、GitLab CI/CD パイプライン(英語)内で Qodana Docker イメージを実行する方法について説明し、次のケースについて説明します。

  • 特定のブランチおよびマージリクエストのインスペクション

  • インスペクションレポートを Qodana クラウドに転送する

  • GitLab CI/CD ユーザーインターフェースでの Qodana レポートの公開

  • 品質ゲートベースライン機能の使用

  • コード品質レポートの生成

プロジェクトを準備する

プロジェクトリポジトリが GitLab CI/CD からアクセスできることを確認してください。

プロジェクトのルートディレクトリに、.gitlab-ci.yml ファイルを保存します。このファイルには、GitLab CI/CD で使用されるパイプライン構成が含まれます。

基本構成

これが基本的なパイプライン構成です。

qodana: image: name: jetbrains/qodana-<linter> entrypoint: [""] cache: - key: qodana-2024.1-$CI_DEFAULT_BRANCH-$CI_COMMIT_REF_SLUG fallback_keys: - qodana-2024.1-$CI_DEFAULT_BRANCH- - qodana-2024.1- paths: - .qodana/cache variables: QODANA_TOKEN: $qodana_token script: - qodana --cache-dir=$CI_PROJECT_DIR/.qodana/cache

この構成では、 image:name (英語) キーワードにより、選択した Qodana Docker イメージがプルされます。

cache (英語) キーワードは、Qodana キャッシュを保存するように GitLab キャッシュを構成するため、以降の実行が高速になります。

script (英語) キーワードは、qodana コマンドを実行し、シェルコマンドセクションで説明されている Qodana 構成オプションを列挙します。

variables キーワードは、Qodana クラウドで生成されたプロジェクトトークンを参照する QODANA_TOKEN 変数(英語)を定義します。このトークンは、有料の Qodana リンターに必要ですが、コミュニティリンターで使用する場合はオプションです。

プロジェクトトークンを生成する方法については、次のセクションを参照してください。

  • オンボーディングセクションでは、Qodana クラウドを初めて使用するときに生成されたプロジェクトトークンを取得する方法について説明します。

  • プロジェクトを管理するセクションでは、既存の Qodana Cloud 組織でプロジェクトを作成する方法について説明します。

特定のブランチをインスペクションする

only (英語) キーワードを使用すると、Qodana にどのブランチをインスペクションするかを指示できます。main ブランチおよび受信マージリクエストのみをインスペクションするには、次の構成を使用できます。

qodana: only: - main - merge_requests image: name: jetbrains/qodana-<linter> entrypoint: [""] cache: - key: qodana-2024.1-$CI_DEFAULT_BRANCH-$CI_COMMIT_REF_SLUG fallback_keys: - qodana-2024.1-$CI_DEFAULT_BRANCH- - qodana-2024.1- paths: - .qodana/cache variables: QODANA_TOKEN: $qodana_token script: - qodana --results-dir=$CI_PROJECT_DIR/.qodana/results --cache-dir=$CI_PROJECT_DIR/.qodana/cache

Qodana レポートを公開する

Qodana クラウドを使用せずに、特定のマージリクエストでレポートを使用できるようにするには、artifacts expose_as (英語) キーワードを使用して、アーティファクトへのパスを変更します。

qodana: image: name: jetbrains/qodana-<linter> entrypoint: [""] cache: - key: qodana-2024.1-$CI_DEFAULT_BRANCH-$CI_COMMIT_REF_SLUG fallback_keys: - qodana-2024.1-$CI_DEFAULT_BRANCH- - qodana-2024.1- paths: - .qodana/cache variables: QODANA_TOKEN: $qodana_token - script: - qodana --save-report --results-dir=$CI_PROJECT_DIR/.qodana/results --cache-dir=$CI_PROJECT_DIR/.qodana/cache artifacts: paths: - .qodana/results/ expose_as: 'Qodana report'

同様の方法でパイプラインを構成したと仮定すると、次のようになります。

  1. マージリクエストのパイプラインに関連付けられた Qodana レポート

    Qodana report affiliated with a pipeline in a merge request
  2. 特定の公開された Qodana アーティファクトに対して利用可能なアクション

    Available actions for a given exposed Qodana artifact

品質ゲートとベースライン

script ブロックの --fail-threshold <number> および --baseline <path/to/qodana.sarif.json> ラインを使用して、品質ゲートおよびベースライン機能を呼び出すことができます。

qodana: image: name: jetbrains/qodana-<linter> entrypoint: [""] cache: - key: qodana-2024.1-$CI_DEFAULT_BRANCH-$CI_COMMIT_REF_SLUG fallback_keys: - qodana-2024.1-$CI_DEFAULT_BRANCH- - qodana-2024.1- paths: - .qodana/cache variables: QODANA_TOKEN: $qodana_token - script: - qodana --fail-threshold <number> --baseline <path/to/qodana.sarif.json> --results-dir=$CI_PROJECT_DIR/.qodana/results --cache-dir=$CI_PROJECT_DIR/.qodana/cache artifacts: paths: - .qodana/results/ expose_as: 'Qodana report'

コード品質レポートを生成する

Qodana のバージョン 2024.1 以降では、GitLab CI/CD のマージリクエスト UI を使用して、問題のある特定のコード行とその説明、改善の推奨事項を表示できます。

この機能を実装するために、Qodana は、コード品質(英語)でサポートされ、gl-code-quality-report.json ファイルに含まれる JSON 形式のインスペクションレポートを生成します。これを構成するには、GitLab CI/CD 構成の artifacts ブロックに codequality キーワードを追加し、gl-code-quality-report.json ファイルへのパスを指定します。例:

image: name: jetbrains/qodana-<linter> entrypoint: [""] cache: - key: qodana-2024.1-$CI_DEFAULT_BRANCH-$CI_COMMIT_REF_SLUG fallback_keys: - qodana-2024.1-$CI_DEFAULT_BRANCH- - qodana-2024.1- paths: - .qodana/cache variables: QODANA_TOKEN: $qodana_token script: - qodana --results-dir=$CI_PROJECT_DIR/.qodana/results --cache-dir=$CI_PROJECT_DIR/.qodana/cache artifacts: reports: codequality: .qodana/results/gl-code-quality-report.json # Path to the report

関連ページ:

Qodana Docker イメージ

基本的に、Docker イメージの名前はリンターの名前と似ています。Qodana リンターには次の Docker イメージが提供されています。JVM 用 Qodana、JVM の Qodana コミュニティ、Android のための Qodana コミュニティ、PHP 用の Qodana、Python 用 Qodana、Python のための Qodana コミュニティ、JS 用 Qodana、Go 用 Qodana、.NET 用 Qodana、.NET の Qodana コミュニティ、...

Qodana クラウド

Qodana を複数のプロジェクトまたはリポジトリで実行する場合、特にコードベースが複数のサーバーと仮想プライベートネットワークに分散されていて、各チームが独立して作業している場合は、すべての分析レポートを 1 か所に読み込んで集約すると便利です。このような場合、すべての Qodana インスタンスからレポート情報を収集して表示するための集中型ソリューションが役立ちます。Qodana クラウドは、さまざまな Qodana レポートを蓄積し、プロジェクトの進捗状況を一元的に追跡するのに役立つクラウ...

ベースライン

ベースラインは、特定の Qodana 実行時に取得され、ファイルに含まれているコードベースの問題のスナップショットです。ベースライン機能を使用すると、現在のコードとベースラインの状態を比較し、新しい問題、変更されていない問題、解決された問題を確認できます。この機能は、Community、Ultimate、Ultimate Plus ライセンスとその試用版で利用可能なすべてのリンターでサポートされています。使い方:ベースラインなしで Qodana を実行すると、現在の実行時に検出された問題を確認...

オンボーディング

オンボーディングは、プロジェクトで作業するために Qodana を準備するための重要なステップであり、次のことが可能になります。プロジェクトリポジトリを Qodana クラウドに接続します、Qodana Cloud 組織、チーム、プロジェクトを作成する、Ultimate および Ultimate Plus リンターに必要なプロジェクトトークンを生成する、セットアップコードインスペクション、オンボーディングでは、JetBrains アカウントの情報 (ライセンスや会社など) が使用されます。以下に手...

プロジェクト

プロジェクトは、Qodana レポートを蓄積します。各プロジェクトは、プロジェクトトークンによって一意に識別されます。このトークンは、Qodana レポートのアップロードに使用されます。プロジェクトの作成:オンボーディング段階では、Qodana Cloud がすでに最初のプロジェクトの作成を支援しているため、これらの手順は追加のプロジェクトを作成する場合にのみ適用されます。チームページで、ボタンをクリックします。以下で説明するウィザードの手順に従います。Qodana Cloud からアクセスでき...