コードカバレッジ
コード・カバレッジを使用すると、テスト・スイートでどのソース・コードが検証されているかについてのインサイトが得られます。コード・カバレッジは、ソフトウェアのパフォーマンスと品質を決定する多くのテスト・メトリクスの 1 つです。
コード・カバレッジの結果を表示
コードカバレッジの結果を表示します:
- マージリクエストウィジェット
- プロジェクトリポジトリ分析
- グループリポジトリ分析
- リポジトリバッジ
MR の差分ファイルにおけるテスト・カバレッジの可視化の詳細については、テスト・カバレッジの可視化を参照してください。
MR でのコード・カバレッジ結果の表示
コードでテストカバレッジを使う場合、正規表現を使ってジョブログからカバレッジ結果を見つけることができます。そして、これらの結果を GitLab のマージリクエストに含めることができます。
パイプラインが成功すると、マージリクエストウィジェットとジョブテーブルにカバレッジが表示されます。パイプライン内の複数のジョブにカバレッジレポートがある場合、それらは平均化されます。
coverage
キーワードを使用してテストカバレッジ結果を追加します。
プロジェクトの.gitlab-ci.yml
ファイルを使用してマージリクエストにテストカバレッジ結果を追加するには、coverage
キーワードを使用して正規表現を指定します。
テストカバレッジの例
この正規表現は、一般的に使用されるテストツールに使用します。
- Simplecov (Ruby).例:
/\(\d+.\d+\%\) covered/
. - pytest-cov (Python).例:
/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
. - Scoverage (Scala).例:
/Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)/
. -
pest --coverage --colors=never
(PHP).例:/^\s*Cov:\s*\d+\.\d+?%$/
. -
phpunit --coverage-text --colors=never
(PHP).例:/^\s*Lines:\s*\d+.\d+\%/
. - gcovr (C/C++).例:
/^TOTAL.*\s+(\d+\%)$/
. -
tap --coverage-report=text-summary
(NodeJS)。例:/^Statements\s*:\s*([^%]+)/
. -
nyc npm test
(NodeJS)。例:/All files[^|]*\|[^|]*\s+([\d\.]+)/
. -
jest --ci --coverage
(NodeJS)。例:/All files[^|]*\|[^|]*\s+([\d\.]+)/
. - excoveralls(Elixir)。例:
/\[TOTAL\]\s+(\d+\.\d+)%/
. -
mix test --cover
(Elixir)。例:/\d+.\d+\%\s+\|\s+Total/
. - JaCoCo (Java/Kotlin).例:
/Total.*?([0-9]{1,3})%/
. -
go test -cover
(Go)。例:/coverage: \d+.\d+% of statements/
。 - .NET (OpenCover)。例:
/(Visited Points).*\((.*)\)/
. - .NET (
dotnet test
line coverage)。例:/Total\s*\|\s*(\d+(?:\.\d+)?)/
. - tarpaulin (Rust)。例:
/^\d+.\d+% coverage/
. - Pester (PowerShell)。例:
/Covered (\d+\.\d+%)/
.
プロジェクトのコードカバレッジ履歴の表示
プロジェクトのコードカバレッジの経年変化を見るには、グラフを見るか、CSVファイルをダウンロードしてください。
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- 左サイドバーで、[分析] > [リポジトリ分析]を選択します。
各ジョブの履歴データはグラフの上のドロップダウンリストに表示されます。
データの CSV ファイルを表示するには、Download raw data (.csv
) を選択します。
グループコードカバレッジの履歴を見る
グループの下にあるすべてのプロジェクトのコードカバレッジを時系列で見るには、グループリポジトリの分析を見ることができます。
パイプラインバッジ
パイプラインバッジを使って、プロジェクトのパイプラインの状態やテストカバレッジを示すことができます。これらのバッジは、最近成功したパイプラインによって決定されます。
カバレッジ チェック承認者ルール
- GitLab 14.0 で導入されました。
- GitLab 14.1のプロジェクト設定で設定可能に。
プロジェクトのテストカバレッジを低下させるようなマージリクエストを行う場合、そのようなマージリクエストは選択したユーザーまたはグループによる承認が必要であると規定することができます。
Coverage-Check
MR 承認ルールを有効にするには、次の手順に従います:
- 全体のカバレッジ値に含めたいすべてのジョブについて、
coverage
正規表現を設定します。 - プロジェクトに移動し、設定 > マージリクエストを選択します。
-
マージリクエスト承認者の下で、
Coverage-Check
承認ルールの横にある有効を選択します。 - 対象ブランチを選択します。
- 必要な承認者数を0以上に設定します。
- 承認を行うユーザーまたはグループを選択します。
- 承認ルールの追加を選択します。
トラブルシューティング
コードカバレッジからカラーコードを削除
テスト・カバレッジ・ツールの中には、正規表現で正しく解析されない ANSI カラー・コードを出力するものがあります。このため、カバレッジの解析に失敗します。
カバレッジ・ツールの中には、出力のカラーコードを無効にするオプションがないものもあります。その場合は、カバレッジツールの出力を1行のスクリプトにパイプし、カラーコードを除去してください。
使用例:
lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'