Qodana 2025.2 ヘルプ

コードカバレッジ

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

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

リンター

コードカバレッジツール

サポートされているレポートファイル拡張子

JVM 用 Qodana

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

ic

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 レポートおよび 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. コードカバレッジツールを使用してカバレッジレポートを生成します。レポートは <project-root>/.qodana/code-coverage ディレクトリに保存されます。 boostrap キーを使用してカバレッジレポートファイルをコピーできます。例:

    boostrap: copy path/to/coverage/file <project-root>/.qodana/code-coverage

    <project-root>/.qodana/code-coverage ディレクトリをオーバーライドする方法については、コードカバレッジを実行するの章の推奨事項を参照してください。

    複数のリポジトリを含むモノレポプロジェクトの場合、このディレクトリは各リポジトリに作成する必要があります。

  3. プロジェクトを準備します。モノレポプロジェクトがある場合は、各リポジトリの Qodana 構成を個別の qodana.yaml ファイルに保存します。これらのファイルをリポジトリディレクトリに配置するか、カスタム名を付けてプロジェクトのルートディレクトリに保存することができます。

    .NET 用 Qodana リンターの場合は、 coverlet.msbuild (英語) および coverlet.collector (英語) パッケージをテストプロジェクトに追加します。また、.NET 用 Qodana リンターの場合は、コードカバレッジレポートに生成されたファイルに関する情報が含まれているかどうかを確認します。

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

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

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

docker run \ -v $(pwd):/data/project/ \ -v .qodana/code-coverage/:/data/coverage \ -e QODANA_TOKEN="<qodana-cloud-token>" \ jetbrains/qodana-<image>
qodana scan \ -v .qodana/code-coverage/:/data/coverage \ -e QODANA_TOKEN="<qodana-cloud-token>"

モノレポプロジェクトがある場合は、 -i <path-relative-to-project-root> オプションを使用してリポジトリディレクトリを指定します。Qodana の構成ファイルをカスタム名で保存した場合は、 --config <path-relative-to-project-root> オプションを使用します。デフォルトのコードカバレッジレポートディレクトリをオーバーライドするには、 --coverage-dir <path-relative-to-project-root> オプションを使用します。

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

以下は、リポジトリの JS/jest ディレクトリで実行されている 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 use by Qodana uses: actions/upload-artifact@v4 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,--image,jetbrains/qodana-js:2025.2" pr-mode: false

モノレポプロジェクトがあり、カスタム名Qodana の構成ファイルを保存している場合は、args ブロックで --config,<path-relative-to-project-root> オプションを使用します。デフォルトのコードカバレッジレポートディレクトリをオーバーライドするには、 --coverage-dir,<path-relative-to-project-root> オプションを使用します。

--coverage-dir オプションを使用して、.qodana/coverage ディレクトリから生成されたすべてのコードカバレッジ出力ファイルを読み取る GitLab CI/CD パイプラインを作成します。

include: - component: $CI_SERVER_FQDN/qodana/qodana/qodana-gitlab-ci@v2025.2 inputs: args: --coverage-dir,$CI_PROJECT_DIR/.qodana/code-coverage,--image,<image>

モノレポプロジェクトがあり、カスタム名Qodana の構成ファイルを保存している場合は、args --config,<path-relative-to-project-root> オプションを追加します。

include: - component: $CI_SERVER_FQDN/qodana/qodana/qodana-gitlab-ci@v2025.2 inputs: args: --coverage-dir,$CI_PROJECT_DIR/.qodana/code-coverage,--config,<path-relative-to-project-root>,--image,<image>

--coverage-dir オプションを使用して、.qodana/coverage ディレクトリから生成されたすべてのコードカバレッジ出力ファイルを読み取るパイプラインを作成します。

この構成では、args: ブロックはコードカバレッジ分析の結果を /data/coverage ディレクトリにマップします。

# Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml   trigger: - main   pool: vmImage: ubuntu-latest   steps: - task: Cache@2 # Not required, but Qodana will open projects with cache faster. key: '"$(Build.Repository.Name)" | "$(Build.SourceBranchName)" | "$(Build.SourceVersion)"' path: '$(Agent.TempDirectory)/qodana/cache' restoreKeys: | "$(Build.Repository.Name)" | "$(Build.SourceBranchName)" "$(Build.Repository.Name)" - task: QodanaScan@2025 env: QODANA_TOKEN: $(QODANA_TOKEN) inputs: args: '-v, $(System.DefaultWorkingDirectory)/<ProjectPath>/.qodana/:/data/coverage'

Qodana CLI 引数フィールドを使用して、コードカバレッジ分析の結果を /data/coverage ディレクトリにマップします。例: これは $(System.DefaultWorkingDirectory)/<ProjectPath> ディレクトリになります。

The Qodana Scan task UI config for baseline and quality gate

.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 add package coverlet.collector && \\ ((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

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

コードカバレッジレポートファイルに生成されたファイルに関する情報が含まれている場合は、次の行の 1 つまたは両方を dotnet test ... 行に追加して、この情報を除外します。

/p:ExcludeByAttribute="Obsolete,GeneratedCodeAttribute,CompilerGeneratedAttribute" /p:ExcludeByFile="some-exclude-pattern"

これらの行の説明は次のとおりです。

コマンドステップ

説明

/p:ExcludeByAttribute="..."

特定の属性でマークされたメソッドまたはクラスを除外する

/p:ExcludeByFile="..."

パターンに一致するファイルを除外します (例: **/Generated/*.cs)

.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@v4 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
2025 年 9 月 23 日

関連ページ:

価格モデル

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

Java、Kotlin、Groovy

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。Java プロジェクトを分析するには、次のリンターを使用できます。リンター名 Docker イメージベースとなるもの IntelliJ IDEA Ultimate ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 Java、Kotlin、Groovy、...

JavaScript and TypeScript

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。JavaScript および TypeScript プロジェクトを解析するには、以下の特徴を持つ Qodana for JS リンターを使用できます。リンター名 Docker イメージベースとなるもの WebStorm ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメー...

PHP

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク向けに設計された JetBrains IDE に基づいています。PHP プロジェクトを解析するには、以下の特徴を持つ Qodana for PHP リンターを使用できます。リンター名 Docker イメージベースとなるもの PhpStorm ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 PHP、JavaScr...

.NET

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。.NET プロジェクトを分析するには、次の Qodana リンターを使用できます。リンター名 Docker イメージ * ベースとなるもの JetBrains Rider ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 C#、C/C++、VB.NET、J...

Python

すべての Qodana リンターは、特定のプログラミング言語とフレームワーク用に設計された JetBrains IDE に基づいています。Python プロジェクトを分析するには、次のリンターを使用できます。リンター名 Docker イメージベースとなるもの PyCharm Professional ライセンスに基づいて利用可能 Ultimate および Ultimate Plus ライセンス発送方法ネイティブソリューションと Docker イメージサポートされる言語 Python、JavaScript、T...