正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

カバレッジレポート

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

coverageキーワードを使用して、テストジョブのジョブログ出力からカバレッジ率を抽出し、マージリクエストと分析に表示します。

このキーワードは、カバレッジ率のみを表示します。MR差分に1行ごとのアノテーションは生成されません。行アノテーションを表示するには、artifacts:reports:coverage_reportを別途設定してください。

カバレッジレポートを設定する

カバレッジレポートを設定するには:

  1. テストツールの出力に一致する正規表現で、ジョブにcoverageキーワードを追加します:

    test:
      script:
        - pytest --cov
      coverage: '/TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
  2. 複数のジョブからカバレッジを集約するには、各ジョブにcoverageキーワードを追加します。

カバレッジの正規表現パターン

次の正規表現パターンは、一般的なテストカバレッジツールの出力に一致します。ツールの出力形式は時間の経過とともに変更される可能性があるため、これらを慎重にテストしてください。

ツール言語コマンド正規表現パターン
pytest-covPythonpytest --cov/TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
Simplecov-htmlRubyrspec spec/Line\sCoverage:\s\d+\.\d+%/
ツール言語コマンド正規表現パターン
gcovrC/C++gcovr/^TOTAL.*\s+(\d+\%)$/
tarpaulinRustcargo tarpaulin/^\d+.\d+% coverage/
ツール言語コマンド正規表現パターン
JaCoCoJava/Kotlin./gradlew test jacocoTestReport/Total.*?([0-9]{1,3})%/
ScoverageScalasbt coverage test coverageReport/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
ツールコマンド正規表現パターン
taptap --coverage-report=text-summary/^Statements\s*:\s*([^%]+)/
nycnyc npm test/All files[^|]*|[^|]*\s+([\d\.]+)/
jestjest --ci --coverage/All files[^|]*|[^|]*\s+([\d\.]+)/
node:testnode --experimental-test-coverage --test/all files[^|]*|[^|]*\s+([\d\.]+)/
ツールコマンド正規表現パターン
pestpest --coverage --colors=never/Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)/
phpunitphpunit --coverage-text --colors=never/^\s*Lines:\s*\d+.\d+\%/
ツールコマンド正規表現パターン
go test(シングル)go test -cover/coverage: \d+.\d+% of statements/
go test(プロジェクト)go test -coverprofile=cover.profile && go tool cover -func cover.profile/total:\s+\(statements\)\s+\d+.\d+%/
ツール言語コマンド正規表現パターン
OpenCover.NETなし/(Visited Points).*\((.*)\)/
dotnet test.NETdotnet test/Total\s*|*\s(\d+(?:\.\d+)?)/
PesterPowerShellなし/Covered (\d{1,3}(\.|,)?\d{0,2}%)/
ツールコマンド正規表現パターン
excoverallsなし/\[TOTAL\]\s+(\d+\.\d+)%/
mixmix test --cover/\d+.\d+\%\s+|\s+Total/

カバレッジチェックの承認ルールを追加する

  • プラン: Premium、Ultimate

プロジェクトのテストカバレッジを低下させるマージリクエストについて、特定のユーザーまたはグループによる承認を要求するように設定できます。

前提条件:

  • カバレッジレポートを設定します。

Coverage-Check承認ルールを追加するには:

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 左サイドバーで、設定 > マージリクエストを選択します。
  3. マージリクエスト承認で、次のいずれかを実行します。
    • Coverage-Check承認ルールの横にある有効化を選択します。
    • 手動セットアップの場合は、承認ルールを追加を選択し、ルール名Coverage-Checkと入力します。
  4. ターゲットブランチを選択します。
  5. 必要な承認数を設定します。
  6. 承認を行うユーザーまたはグループを選択します。
  7. 変更を保存を選択します。

ベースパイプラインにカバレッジデータが含まれていない場合、マージリクエストが全体的なカバレッジを改善しても、Coverage-Check承認ルールは承認を必要とします。

カバレッジ履歴を表示する

時間の経過とともにプロジェクトまたはグループのカバレッジの傾向を追跡することができます。

プロジェクトの場合

  1. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 左サイドバーで、分析 > リポジトリ分析を選択します。
  3. ドロップダウンリストから、履歴データを表示するジョブを選択します。
  4. オプション。データをダウンロードするには、**元のデータをダウンロード (.csv)**を選択します。

グループの場合

  • プラン: Premium、Ultimate
  1. 上部のバーで、検索または移動先を選択して、グループを見つけます。
  2. 左サイドバーで、分析 > リポジトリ分析を選択します。
  3. オプション。データをダウンロードするには、過去のテストカバレッジデータをCSV形式でダウンロードを選択します。

カバレッジバッジを表示する

プロジェクトにカバレッジバッジを追加するには、テストカバレッジレポートバッジを参照してください。

トラブルシューティング

カバレッジレポートの使用時に、次の問題が発生する可能性があります。

MRウィジェットにカバレッジ率が表示されない

coverageキーワードは、ジョブのジョブログ出力から正規表現を使用してパーセンテージを抽出します。パーセンテージが表示されない場合:

  • 正規表現がツールの実際の出力と一致することを確認します。ジョブログから1行をコピーし、正規表現に対してテストします。

  • 一部のツールは、正規表現の一致を妨げるANSIカラー出力を生成します。ツールのカラー出力の無効化をサポートしていない場合は、解析中の前にコードを削除します:

    lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'
  • ジョブが正常に完了したことを確認します。カバレッジは、成功したジョブからのみ抽出されます。

  • 子パイプラインからのカバレッジ出力は記録されません。詳細については、イシュー280818を参照してください。

coverageキーワードは、MRウィジェットにパーセンテージのみを表示します。差分の1行ごとのアノテーションについては、artifacts:reports:coverage_reportを別途設定してください。