Qodana 2024.1 ヘルプ

コードカバレッジ

コードカバレッジは、生成されたレポートを使用して、メソッド、クラス、ファイル内の全体的なコードカバレッジを計算します。また、これらのエンティティにおけるカバレッジの不足に関連する問題についても報告します。

この機能は、次のリンターの Ultimate および Ultimate Plus ライセンスで利用できます。

リンター

コードカバレッジツール

サポートされているレポート形式

JVM 用 Qodana

IntelliJ IDEA コードカバレッジエージェント(英語)が推奨ツールです

ic が推奨される形式です。XML もサポートされています。

JaCoCo(英語)

xml

JS 用 Qodana

Jest(英語)

lcov

PHP 用の Qodana

PhpUnit(英語)

xml

.NET 用 Qodana

coverlet.msbuild(英語)

lcov

Python 用 Qodana

Coverage.py(英語)

xml

Go 用 Qodana

go test

out

使い方

欠落コードカバレッジの問題については、Qodana の事前定義されたしきい値は現在 50% に設定されています。

コードカバレッジでは、qodana.recommended および qodana.starterデフォルトインスペクションプロファイルにすでに含まれているいくつかのインスペクションが使用されるため、これらを有効にする必要はありません。

インスペクションが完了すると、Qodana レポート IDE および JetBrains IDE でレポートが利用可能になります。

コードカバレッジの計算

Qodana は、関数、メソッド、クラスステートメントが無視されるロジックを含むコード行の数に基づいてコードカバレッジを計算します。以下は、その仕組みに関するコメントを含むスニペットです。

function divide(a, b) { // Not analyzed by the code coverage return a / b; // Analyzed by the code coverage } module.exports = divide; // Analyzed by the code coverage

プロジェクトを準備する

  1. コードカバレッジツールを構成します。Jest(英語) を構成する際は、カバレッジレポート内のすべてのファイルがプロジェクト内の相対パスを持つ必要があることに注意してください。例: コードベースファイルが <project-root>/src/ ディレクトリに含まれている場合、コードカバレッジレポートのファイルパスは src/<file-name> である必要があります。

  2. Qodana をローカルで実行する場合は、コードカバレッジツールを使用してコードカバレッジレポートを生成します。レポートを Qodana が読み取れるディレクトリに保存します。GitHub パイプラインで Qodana を実行する場合は、コードカバレッジを実行するセクションに示すようにワークフローを構成します。

.NET 用 Qodana リンターの場合、テストプロジェクト用に coverlet.msbuild(英語) を構成します。

コードカバレッジを実行する

.NET 用 Qodana リンターを使用したコードカバレッジの実行について学習するには、このページの .NET 用 Qodana セクションに進んでください。

QODANA_TOKEN 変数を使用して、コードカバレッジレポートを含むディレクトリを /data/coverage ディレクトリとプロジェクトトークンにマップします。Docker および Qodana CLI(英語) コマンドのサンプルを次に示します。

docker run \ -v $(pwd):/data/project/ \ -v /directory/with/coverage/report/:/data/coverage \ -e QODANA_TOKEN="<qodana-cloud-token>" \ jetbrains/qodana-<linter>
qodana scan \ -v /directory/with/coverage/report/:/data/coverage \ -e QODANA_TOKEN="<qodana-cloud-token>"

すべてのコードカバレッジ出力ファイルを <project-root-dir>/.qodana/code-coverage ディレクトリに保存するパイプラインを作成します。GitHub アクション構成のさまざまな例は、GitHub(英語) Web サイトで見つけることができます。

以下は、JS 用 Qodana リンターのパイプライン構成例です。

name: JavaScript - Jest Test on: workflow_dispatch: pull_request: push: branches: - main - 'releases/*' jobs: build: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - name: Use Node.js 18.x uses: actions/setup-node@v2 with: node-version: 18.x - name: Install dependencies run: npm ci working-directory: JS/jest - name: Run tests run: npm test working-directory: JS/jest - name: Archive coverage data # Archive data for using by Qodana uses: actions/upload-artifact@v2 with: name: jest-coverage-data path: JS/jest/.qodana/code-coverage - name: Qodana Scan # Run Qodana uses: JetBrains/qodana-action@main env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_JS }} with: args: "-i,JS/jest,--linter,jetbrains/qodana-js:2024.1" pr-mode: false

すべてのコードカバレッジ出力ファイルを <project-root-dir>/coverage ディレクトリに保存する 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 --save-report --results-dir=$CI_PROJECT_DIR/.qodana/results --coverage-dir=$CI_PROJECT_DIR/coverage artifacts: paths: - .qodana/results/report expose_as: 'Qodana report'

これは、QODANA_TOKEN 変数を使用してプロジェクトトークンを含めます。script ブロック内の --coverage-dir=$CI_PROJECT_DIR/coverage は、コードカバレッジディレクトリを使用して Qodana を実行します。

.NET 用 Qodana

.NET 用 Qodana リンターの qodana.yaml ファイル構成の例を次に示します。

dotnet: solution: <your-solution-file> bootstrap: dotnet build; cd <path-to-dir-with-test-project-file> && \\ dotnet add package coverlet.msbuild && \\ ((dotnet test /p:CollectCoverage=true /p:CoverletOutput=<your-project-folder>/.qodana/code-coverage /p:CoverletOutputFormat=lcov))

ここでは、dotnet オプションでソリューションファイルを構成します。

bootstrap キーは、Qodana を実行する前にいくつかの手順を実行します。手順については表で説明します。

コマンドステップ

説明

dotnet build

プロジェクトまたはソリューションを構築する

cd <path-to-dir-with-test-project-file>

プロジェクトのテストファイルが含まれるディレクトリに移動します

dotnet add package coverlet.msbuild

coverlet.msbuild パッケージをプロジェクトに追加します。このコマンドは毎回繰り返す必要があります

dotnet test ...

プロジェクト内でテストを実行し、次のことを行います。

/p:CollectCoverage=true

コードカバレッジを有効にする

/p:CoverletOutput=<your-project-folder>/.qodana/code-coverage

コードカバレッジ結果を特定のディレクトリに収集します

/p:CoverletOutputFormat=lcov

コードカバレッジの出力形式を指定する

.NET 用 Qodana リンターのコードカバレッジインスペクションの結果は、Qodana クラウドで利用できます。

フレッシュコード

フレッシュコードは、GitHub プルリクエストに含まれるコードです。Qodana は、フレッシュコードカバレッジを計算し、結果を表示できます。

フレッシュコード機能を有効にするには、GitHub ワークフローで PR モードを構成します。JavaScript の新しいコードをインスペクションするサンプルは次のとおりです。

name: Code coverage fresh code on: workflow_dispatch: pull_request: push: branches: - main - 'releases/*' jobs: build: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 - name: Use Node.js 18.x uses: actions/setup-node@v2 with: node-version: 18.x - name: Install dependencies run: npm ci - name: Run tests run: npm test - name: Archive coverage data uses: actions/upload-artifact@v2 with: name: jest-coverage-data path: .qodana/code-coverage - name: Qodana Scan uses: JetBrains/qodana-action@main env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN_JS }} with: pr-mode: true # Enable the pull-request mode

レポートの概要

プロジェクトを準備して コードカバレッジを実行した後、Qodana クラウドまたは IDE を使用してコードカバレッジレポートを表示できます。

Qodana クラウド

コードカバレッジ統計は、コダナレポート UI の右上隅にあります。また、この機能で使用されたインスペクションも列挙します。

Code coverage in Qodana Cloud

IDE

コードカバレッジレポートは、バージョン 2023.2 以降の IntelliJ IDEA、WebStorm、PhpStorm、PyCharm、GoLand IDE を使用して表示できます。この機能は、リンク後に Qodana クラウドから取得したレポート、またはローカルストレージからのレポートで利用できます。

Qodana クラウドからレポートを開く

  1. IDE で、ツール | Qodana | Qodana にログインに移動します。

    The Log in to Qodana Cloud menu
  2. 設定ダイアログで、ログインをクリックします。

    The Settings window

    これにより、認証ページにリダイレクトされます。

  3. 設定ダイアログで、リンクするプロジェクトを検索します。

    Linking with the project

IDE でカバレッジレポートを表示する

JetBrains IDE でローカルベースのコードカバレッジレポートを直接表示できます。

IDE で実行 | カバレッジデータを表示に移動し、コードカバレッジレポートを含むファイルを開きます。

The Choose Coverage Suite to Display dialog

カバレッジツールウィンドウでは、テストカバレッジレポートを表示できます。このレポートには、実行されたコードまたはテストでカバーされたコードの割合が表示されます。

The Coverage tool window

レポートの概要

IDE は、色のマーキングを使用してコードベースのテストカバレッジをハイライトします。デフォルトでは、緑色は特定の行がカバーされていることを意味し、赤色はカバーされていないコード行を意味します。

The coverage report overview

このレポートには、メソッド、関数、クラスのロジックを実装する行のカバレッジが表示されますが、関数、メソッド、クラス宣言のカバレッジは表示されません。以下の図は、コードカバレッジが 7 行目には適用されず、8 行目はカバーされていないことを示しています。

Code coverage for a specific method

関連ページ:

価格モデル

ニーズに応じて、次の表に示す適切なライセンスを選択できます。Community フリー孤立した問題の解決に最適 Ultimate 詳細については、サブスクリプションのオプションと価格を参照してくださいさまざまなビジネスタスクを解決するために設計されています。試用版をご利用いただけます。Ultimate Plus 詳細については、サブスクリプションのオプションと価格を参照してください Ultimate ライセンスと同じ機能がすべて含まれていますが、追加機能と無制限の履歴データストレージも含まれています。試用...

クイックスタート

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

GitLab CI/CD

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

ベースライン

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

FlexInspect

IntelliJ IDEA のバージョン 2024.1 以降では、IntelliJ API と Kotlin を使用して、プロジェクト固有の独自のインスペクションを開発できます。次のことが可能です。ソースコードの PSI 表現にアクセスします。新しいインスペクションをオンザフライでデバッグします。期待どおりに動作しないコードフラグメントのハイライトなど、新しいカスタムインスペクションの動作を観察します。FlexInspect を使用すると、すべての IntelliJ IDEA および Qodana イ...