GitHub アクション
使用箇所
Qodana GitHub のスキャンアクション(英語)を使用すると、GitHub リポジトリで Qodana を実行できます。
基本構成
GitHub UI の
タブで、QODANA_TOKEN
暗号化シークレット(英語)を作成し、プロジェクトトークンをその値として保存します。GitHub UI の
タブで、新しいワークフローを設定し、.github/workflows/code_quality.yml
ファイルを作成します。main
とmaster
ブランチ、およびリリースブランチとリポジトリに届くプルリクエストをインスペクションするには、このワークフロー構成を.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 が見つかった問題を自動的に修正し、変更をリポジトリにプッシュするには、次のことを行う必要があります。
適用する修正の種類を選択します
または、使用するクイックフィックス戦略を使用してアクション
args
プロパティを設定します。--apply-fixes
または--cleanup
push-fixes
プロパティを次のように設定しますpull-request
: 修正を加えた新しいブランチを作成し、元のブランチへのプルリクエストを作成します。または
branch
: オリジナルのブランチに修正をプッシュします。また、pr-mode
をfalse
に設定します。現在、このモードは修正の適用ではサポートされていません。
ジョブに適切な権限を設定する (
contents: write
、pull-requests: write
、checks: write
)push-fixes
プロパティにpull-request
値を使用する場合: GitHub アクションによるプルリクエストの作成と承認を許可します。(英語)
構成例:
GitHub コードスキャン
Qodana を使用して、プロジェクト用に GitHub コードスキャン(英語)をセットアップできます。これを行うには、code_quality.yml
ワークフローファイルの Qodana スキャンの基本構成のすぐ下に次の行を追加します。
このサンプルは、SARIF 形式の Qodana レポートを GitHub にアップロードするために codeql-action
を呼び出し、sarif_file
キーを使用してレポートファイルを指定します。
プルリクエストのクオリティゲート
クオリティゲートが失敗した場合、GitHub でプルリクエストのマージをブロックするように強制できます。これを行うには、以下の説明に従ってブランチ保護ルール(英語)を作成します。
Qodana スキャンアクションを呼び出す新しい GitHub ワークフローを作成するか、既存の GitHub ワークフローを開きます。
main
ブランチを対象とするpull_request
イベントで実行されるようにワークフローを設定します。
main
の代わりに、ここでブランチを指定できます。
Qodana アクション
fail-threshold
オプションの問題の数 (整数) を設定します。リポジトリ名にある設定をクリックします。
左側のメニューでブランチをクリックします。
ブランチ保護ルールセクションで、ルールの追加をクリックします。
main
をブランチ名前パターンに追加します。マージ前にステータスチェックに合格する必要があるを選択します。
Qodana
ステータスチェックを検索して確認してください。作成をクリックします。
品質ゲートとベースライン
品質ゲートとベースライン機能を組み合わせて、技術的負債を管理し、新しい問題のみを報告し、問題が多すぎるプルリクエストをブロックすることができます。
プロジェクトのベースラインを確立するには、次の手順に従います。
Qodana をプロジェクト上でローカルに実行します。
http://localhost:8080/
でレポートを開き、検出された問題をベースラインに追加し、qodana.sarif.json
ファイルをダウンロードします。qodana.sarif.json
ファイルを GitHub のプロジェクトルートフォルダーにアップロードします。--baseline,qodana.sarif.json
引数を、code_quality.yml
ファイルの Qodana スキャンアクション構成args
パラメーターに追加します。
ベースラインを更新する場合は、これらの手順をもう一度繰り返す必要があります。
これ以降、GitHub はベースラインに新規として追加されなかった問題に対してのみ変更を生成するようになります。
ベースラインに加えて品質ゲートを確立するには、baseline-path
行の直後に次の行を code_quality.yml
に追加します。
これに基づいて、ベースラインを超えるプルリクエスト内の新しい問題のみを検出できるようになります。同時に、fail-threshold
制限を超える新しい問題を伴うプルリクエストはブロックされ、ワークフローは失敗します。
Qodana バッジを取得する
リポジトリに Qodana ワークフローバッジを設定するには、次の手順に従います。
以前に構成したワークフロー実行に移動します。
ワークフローページで、ステータスバッジを作成するを選択します。
Markdown テキストをリポジトリの README ファイルにコピーします。
![ステータスバッジの作成 Creating status badge](https://user-images.githubusercontent.com/13538286/148529278-5d585f1d-adc4-4b22-9a20-769901566924.png)
構成
ほとんどの場合、args
以外のオプションは必要ありません。1 つのワークフローで複数の Qodana スキャンジョブを構成する場合、他のすべてのオプションが役に立ちます。
with
(英語) を使用してアクションパラメーターを定義します。
名前 | 説明 | デフォルト値 |
---|---|---|
| 追加の Qodana CLI | - |
| 解析結果を保存するディレクトリ。オプション。 |
|
| Qodana の結果 (SARIF、その他のアーティファクト、ログ) をアーティファクトとしてジョブにアップロードします。オプション。 |
|
| 結果のアップロードに使用される Qodana 結果アーティファクト名を指定します。オプション。 |
|
| Qodana キャッシュを保存するディレクトリ。オプション。 |
|
| Qodana の実行には GitHub キャッシュ(英語)を使用します。オプション。 |
|
| プライマリキャッシュキー(英語)を設定します。オプション。 |
|
| 追加のキャッシュキー(英語)を設定します。オプション。 |
|
| デフォルトのブランチのみのキャッシュをアップロードします。オプション。 |
|
| アノテーションを使用して、GitHub ユーザーインターフェースで結果をマークします。オプション。 |
|
| プルリクエストで変更されたファイルのみを分析します。オプション。 |
|
| Qodana 結果の概要を含むコメントをプルリクエストに投稿します。オプション。 |
|
| リポジトリにアクセスするための GitHub トークン: アノテーションやコメントを投稿します。オプション。 |
|
| Qodana 修正をリポジトリにプッシュします。 |
|
関連ページ:
![](https://resources.jetbrains.com/help/img/qodana/2024.1/qc-create-project.png)
プロジェクト
プロジェクトは、Qodana レポートを蓄積します。各プロジェクトは、プロジェクトトークンによって一意に識別されます。このトークンは、Qodana レポートのアップロードに使用されます。プロジェクトの作成:オンボーディング段階では、Qodana Cloud がすでに最初のプロジェクトの作成を支援しているため、これらの手順は追加のプロジェクトを作成する場合にのみ適用されます。チームページで、ボタンをクリックします。以下で説明するウィザードの手順に従います。Qodana Cloud からアクセスでき...
![](https://pleiades.io/icons/jetbrains_logo.png)
YAML ファイル
デフォルトでは、Qodana はプロジェクトのルートディレクトリに含まれるファイルから構成を読み取ります。オプションを使用してこのファイル名を上書きできます。詳細については、カスタム構成ファイルを参照してください。便宜上、このセクションではデフォルトの名を使用して参照します。で適用された構成は、デフォルトのインスペクションプロファイル設定と Qodana リンターのデフォルト構成を上書きします。HTML レポートセクションを使用して構成することができ、すべての変更が自動的に適用されます。の JS...
![](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/quickstart-run-in-ide-report-links.png)
クイックスタート
Qodana (2024.1) の現在のバージョンは、Java、Kotlin、Groovy、PHP、JavaScript、TypeScript、C#、Visual Basic、C、C++、Python、Golang プロジェクトを分析できるリンターを提供します。さまざまな機能を使用して、デフォルトのリンター構成を拡張することもできます。例として、このセクションでは、以下を使用して Qodana の操作をすぐに開始できる方法について説明します。JetBrains IDE、コマンドラインインターフェ...
![](https://resources.jetbrains.com/help/img/qodana/2024.1/ui-overview.png)
インスペクションレポート
Qodana を使用すると、ローカルまたは Qodana クラウドで、インタラクティブでユーザーフレンドリーな形式でインスペクションレポートを確認できます。各レポートには次のタブが含まれています。実際の問題は、Qodana が最新のインスペクション中に検出した問題を明らかにします、ベースラインには、ベースラインとしてマークされ、それ以降修正されていない問題がリストされます。構成により、将来の使用に備えて 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 レポートの公開、品質ゲートとベースライン機能の使用、コード品...