Qodana 2024.1 ヘルプ

GitHub アクション

使用箇所

Qodana GitHub のスキャンアクション(英語)を使用すると、GitHub リポジトリで Qodana を実行できます。

基本構成

  1. GitHub UI の設定タブで、QODANA_TOKEN 暗号化シークレット(英語)を作成し、プロジェクトトークンをその値として保存します。

  2. GitHub UI のアクションタブで、新しいワークフローを設定し、.github/workflows/code_quality.yml ファイルを作成します。

  3. mainmaster ブランチ、およびリリースブランチとリポジトリに届くプルリクエストをインスペクションするには、このワークフロー構成を .github/workflows/code_quality.yml ファイルに保存します。

    name: Qodana on: workflow_dispatch: pull_request: push: branches: # Specify your branches here - main # The 'main' branch - master # The 'master' branch - 'releases/*' # The release branches 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 }}

さまざまなジョブが並行して実行される(英語)ため、Qodana 用に別のワークフローファイルを用意することをお勧めします。

Qodana Cloud

クイックフィックスの適用

Qodana が見つかった問題を自動的に修正し、変更をリポジトリにプッシュするには、次のことを行う必要があります。

  1. 適用する修正の種類を選択します

  2. push-fixes プロパティを次のように設定します

    • pull-request : 修正を加えた新しいブランチを作成し、元のブランチへのプルリクエストを作成します。

    • または branch : オリジナルのブランチに修正をプッシュします。また、pr-modefalse に設定します。現在、このモードは修正の適用ではサポートされていません。

  3. ジョブに適切な権限を設定する ( contents: writepull-requests: writechecks: write )

構成例:

- name: Qodana Scan uses: JetBrains/qodana-action@v2024.1 with: pr-mode: false args: --apply-fixes push-fixes: pull-request env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHub コードスキャン

Qodana を使用して、プロジェクト用に GitHub コードスキャン(英語)をセットアップできます。これを行うには、code_quality.yml ワークフローファイルの Qodana スキャンの基本構成のすぐ下に次の行を追加します。

- uses: github/codeql-action/upload-sarif@v2 with: sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json

このサンプルは、SARIF 形式の Qodana レポートを GitHub にアップロードするために codeql-action を呼び出し、sarif_file キーを使用してレポートファイルを指定します。

プルリクエストのクオリティゲート

クオリティゲートが失敗した場合、GitHub でプルリクエストのマージをブロックするように強制できます。これを行うには、以下の説明に従ってブランチ保護ルール(英語)を作成します。

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

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

on: pull_request: branches: - main

main の代わりに、ここでブランチを指定できます。

  1. Qodana アクション fail-threshold オプションの問題の数 (整数) を設定します。

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

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

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

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

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

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

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

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

品質ゲートベースライン機能を組み合わせて、技術的負債を管理し、新しい問題のみを報告し、問題が多すぎるプルリクエストをブロックすることができます。

プロジェクトのベースラインを確立するには、次の手順に従います。

  1. Qodana をプロジェクト上でローカルに実行します。

cd project qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --show-report
  1. http://localhost:8080/ でレポートを開き、検出された問題をベースラインに追加しqodana.sarif.json ファイルをダウンロードします。

  2. qodana.sarif.json ファイルを GitHub のプロジェクトルートフォルダーにアップロードします。

  3. --baseline,qodana.sarif.json 引数を、code_quality.yml ファイルの Qodana スキャンアクション構成 args パラメーターに追加します。

- name: Qodana Scan uses: JetBrains/qodana-action@main with: args: --baseline,qodana.sarif.json

ベースラインを更新する場合は、これらの手順をもう一度繰り返す必要があります。

これ以降、GitHub はベースラインに新規として追加されなかった問題に対してのみ変更を生成するようになります。

ベースラインに加えて品質ゲートを確立するには、baseline-path 行の直後に次の行を code_quality.yml に追加します。

fail-threshold: <number-of-accepted-problems>

これに基づいて、ベースラインを超えるプルリクエスト内の新しい問題のみを検出できるようになります。同時に、fail-threshold 制限を超える新しい問題を伴うプルリクエストはブロックされ、ワークフローは失敗します。

Qodana バッジを取得する

リポジトリに Qodana ワークフローバッジを設定するには、次の手順に従います。

  1. 以前に構成したワークフロー実行に移動します。

  2. ワークフローページで、ステータスバッジを作成するを選択します。

  3. Markdown テキストをリポジトリの README ファイルにコピーします。

Creating status badge

構成

ほとんどの場合、args 以外のオプションは必要ありません。1 つのワークフローで複数の Qodana スキャンジョブを構成する場合、他のすべてのオプションが役に立ちます。

with (英語) を使用してアクションパラメーターを定義します。

with: args: --baseline,qodana.sarif.json cache-default-branch-only: true

名前

説明

デフォルト値

args

追加の Qodana CLI scan コマンド(英語)引数。引数をコンマ (,) で分割します (例: -i,frontend,--print-problems)。オプション。

-

results-dir

解析結果を保存するディレクトリ。オプション。

${{ runner.temp }}/qodana/results

upload-result

Qodana の結果 (SARIF、その他のアーティファクト、ログ) をアーティファクトとしてジョブにアップロードします。オプション。

false

artifact-name

結果のアップロードに使用される Qodana 結果アーティファクト名を指定します。オプション。

qodana-report

cache-dir

Qodana キャッシュを保存するディレクトリ。オプション。

${{ runner.temp }}/qodana/caches

use-caches

Qodana の実行には GitHub キャッシュ(英語)を使用します。オプション。

true

primary-cache-key

プライマリキャッシュキー(英語)を設定します。オプション。

qodana-2024.1-${{ github.ref }}-${{ github.sha }}

additional-cache-key

追加のキャッシュキー(英語)を設定します。オプション。

qodana-2024.1-${{ github.ref }}

cache-default-branch-only

デフォルトのブランチのみのキャッシュをアップロードします。オプション。

false

use-annotations

アノテーションを使用して、GitHub ユーザーインターフェースで結果をマークします。オプション。

true

pr-mode

プルリクエストで変更されたファイルのみを分析します。オプション。

true

post-pr-comment

Qodana 結果の概要を含むコメントをプルリクエストに投稿します。オプション。

true

github-token

リポジトリにアクセスするための GitHub トークン: アノテーションやコメントを投稿します。オプション。

${{ github.token }}

push-fixes

Qodana 修正をリポジトリにプッシュします。nonebranch から現在のブランチ、または pull-request にすることができます。オプション。

none

関連ページ:

プロジェクト

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

YAML ファイル

デフォルトでは、Qodana はプロジェクトのルートディレクトリに含まれるファイルから構成を読み取ります。オプションを使用してこのファイル名を上書きできます。詳細については、カスタム構成ファイルを参照してください。便宜上、このセクションではデフォルトの名を使用して参照します。で適用された構成は、デフォルトのインスペクションプロファイル設定と Qodana リンターのデフォルト構成を上書きします。HTML レポートセクションを使用して構成することができ、すべての変更が自動的に適用されます。の JS...

ベースライン

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

クイックスタート

Qodana (2024.1) の現在のバージョンは、Java、Kotlin、Groovy、PHP、JavaScript、TypeScript、C#、Visual Basic、C、C++、Python、Golang プロジェクトを分析できるリンターを提供します。さまざまな機能を使用して、デフォルトのリンター構成を拡張することもできます。例として、このセクションでは、以下を使用して Qodana の操作をすぐに開始できる方法について説明します。JetBrains IDE、コマンドラインインターフェ...

インスペクションレポート

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

GitLab CI/CD

GitLab CI/CD は、さまざまな CI/CD 手法を使用するソフトウェア開発用のツールです。このセクションでは、GitLab CI/CD パイプライン内で QodanaDocker イメージを実行する方法について説明し、次のケースについて説明します。特定のブランチおよびマージリクエストのインスペクション、インスペクションレポートを Qodana クラウドに転送する、GitLab CI/CD ユーザーインターフェースでの Qodana レポートの公開、品質ゲートとベースライン機能の使用、コード品...