カバレッジレポート
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
coverageキーワードを使用して、テストジョブのジョブログ出力からカバレッジ率を抽出し、マージリクエストと分析に表示します。
このキーワードは、カバレッジ率のみを表示します。MR差分に1行ごとのアノテーションは生成されません。行アノテーションを表示するには、artifacts:reports:coverage_reportを別途設定してください。
カバレッジレポートを設定する
カバレッジレポートを設定するには:
テストツールの出力に一致する正規表現で、ジョブに
coverageキーワードを追加します:test: script: - pytest --cov coverage: '/TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'複数のジョブからカバレッジを集約するには、各ジョブに
coverageキーワードを追加します。
カバレッジの正規表現パターン
次の正規表現パターンは、一般的なテストカバレッジツールの出力に一致します。ツールの出力形式は時間の経過とともに変更される可能性があるため、これらを慎重にテストしてください。
| ツール | 言語 | コマンド | 正規表現パターン |
|---|---|---|---|
| pytest-cov | Python | pytest --cov | /TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/ |
| Simplecov-html | Ruby | rspec spec | /Line\sCoverage:\s\d+\.\d+%/ |
| ツール | 言語 | コマンド | 正規表現パターン |
|---|---|---|---|
| gcovr | C/C++ | gcovr | /^TOTAL.*\s+(\d+\%)$/ |
| tarpaulin | Rust | cargo tarpaulin | /^\d+.\d+% coverage/ |
| ツール | 言語 | コマンド | 正規表現パターン |
|---|---|---|---|
| JaCoCo | Java/Kotlin | ./gradlew test jacocoTestReport | /Total.*?([0-9]{1,3})%/ |
| Scoverage | Scala | sbt coverage test coverageReport | /(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/ |
| ツール | コマンド | 正規表現パターン |
|---|---|---|
| tap | tap --coverage-report=text-summary | /^Statements\s*:\s*([^%]+)/ |
| nyc | nyc npm test | /All files[^|]*|[^|]*\s+([\d\.]+)/ |
| jest | jest --ci --coverage | /All files[^|]*|[^|]*\s+([\d\.]+)/ |
| node:test | node --experimental-test-coverage --test | /all files[^|]*|[^|]*\s+([\d\.]+)/ |
| ツール | コマンド | 正規表現パターン |
|---|---|---|
| pest | pest --coverage --colors=never | /Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)/ |
| phpunit | phpunit --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 | .NET | dotnet test | /Total\s*|*\s(\d+(?:\.\d+)?)/ |
| Pester | PowerShell | なし | /Covered (\d{1,3}(\.|,)?\d{0,2}%)/ |
| ツール | コマンド | 正規表現パターン |
|---|---|---|
| excoveralls | なし | /\[TOTAL\]\s+(\d+\.\d+)%/ |
| mix | mix test --cover | /\d+.\d+\%\s+|\s+Total/ |
カバレッジチェックの承認ルールを追加する
- プラン: Premium、Ultimate
プロジェクトのテストカバレッジを低下させるマージリクエストについて、特定のユーザーまたはグループによる承認を要求するように設定できます。
前提条件:
- カバレッジレポートを設定します。
Coverage-Check承認ルールを追加するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左サイドバーで、設定 > マージリクエストを選択します。
- マージリクエスト承認で、次のいずれかを実行します。
Coverage-Check承認ルールの横にある有効化を選択します。- 手動セットアップの場合は、承認ルールを追加を選択し、ルール名に
Coverage-Checkと入力します。
- ターゲットブランチを選択します。
- 必要な承認数を設定します。
- 承認を行うユーザーまたはグループを選択します。
- 変更を保存を選択します。
ベースパイプラインにカバレッジデータが含まれていない場合、マージリクエストが全体的なカバレッジを改善しても、Coverage-Check承認ルールは承認を必要とします。
カバレッジ履歴を表示する
時間の経過とともにプロジェクトまたはグループのカバレッジの傾向を追跡することができます。
プロジェクトの場合
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左サイドバーで、分析 > リポジトリ分析を選択します。
- ドロップダウンリストから、履歴データを表示するジョブを選択します。
- オプション。データをダウンロードするには、**元のデータをダウンロード (.csv)**を選択します。
グループの場合
- プラン: Premium、Ultimate
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 左サイドバーで、分析 > リポジトリ分析を選択します。
- オプション。データをダウンロードするには、過去のテストカバレッジデータをCSV形式でダウンロードを選択します。
カバレッジバッジを表示する
プロジェクトにカバレッジバッジを追加するには、テストカバレッジレポートバッジを参照してください。
トラブルシューティング
カバレッジレポートの使用時に、次の問題が発生する可能性があります。
MRウィジェットにカバレッジ率が表示されない
coverageキーワードは、ジョブのジョブログ出力から正規表現を使用してパーセンテージを抽出します。パーセンテージが表示されない場合:
正規表現がツールの実際の出力と一致することを確認します。ジョブログから1行をコピーし、正規表現に対してテストします。
一部のツールは、正規表現の一致を妨げるANSIカラー出力を生成します。ツールのカラー出力の無効化をサポートしていない場合は、解析中の前にコードを削除します:
lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'ジョブが正常に完了したことを確認します。カバレッジは、成功したジョブからのみ抽出されます。
子パイプラインからのカバレッジ出力は記録されません。詳細については、イシュー280818を参照してください。
coverageキーワードは、MRウィジェットにパーセンテージのみを表示します。差分の1行ごとのアノテーションについては、artifacts:reports:coverage_reportを別途設定してください。