コードカバレッジ

コード・カバレッジを使用すると、テスト・スイートでどのソース・コードが検証されているかについてのインサイトが得られます。コード・カバレッジは、ソフトウェアのパフォーマンスと品質を決定する多くのテスト・メトリクスの 1 つです。

コード・カバレッジの結果を表示

コードカバレッジの結果を表示します:

  • マージリクエストウィジェット
  • プロジェクトリポジトリ分析
  • グループリポジトリ分析
  • リポジトリバッジ

MR の差分ファイルにおけるテスト・カバレッジの可視化の詳細については、テスト・カバレッジの可視化を参照してください。

MR でのコード・カバレッジ結果の表示

コードでテストカバレッジを使う場合、正規表現を使ってジョブログからカバレッジ結果を見つけることができます。そして、これらの結果を GitLab のマージリクエストに含めることができます。

パイプラインが成功すると、マージリクエストウィジェットとジョブテーブルにカバレッジが表示されます。パイプライン内の複数のジョブにカバレッジレポートがある場合、それらは平均化されます。

MR widget coverage

Build status coverage

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+%)/.

プロジェクトのコードカバレッジ履歴の表示

  • GitLab 12.10 で.csv をダウンロードする機能を導入しました。
  • GitLab 13.1でグラフを導入

プロジェクトのコードカバレッジの経年変化を見るには、グラフを見るか、CSVファイルをダウンロードしてください。

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 左サイドバーで、[分析] > [リポジトリ分析]を選択します。

各ジョブの履歴データはグラフの上のドロップダウンリストに表示されます。

データの CSV ファイルを表示するには、Download raw data (.csv) を選択します。

Code coverage graph of a project over time

グループコードカバレッジの履歴を見る

グループの下にあるすべてのプロジェクトのコードカバレッジを時系列で見るには、グループリポジトリの分析を見ることができます。

Code coverage graph of a group over time

パイプラインバッジ

パイプラインバッジを使って、プロジェクトのパイプラインの状態やテストカバレッジを示すことができます。これらのバッジは、最近成功したパイプラインによって決定されます。

カバレッジ チェック承認者ルール

プロジェクトのテストカバレッジを低下させるようなマージリクエストを行う場合、そのようなマージリクエストは選択したユーザーまたはグループによる承認が必要であると規定することができます。

Coverage-Check MR 承認ルールを有効にするには、次の手順に従います:

  1. 全体のカバレッジ値に含めたいすべてのジョブについて、coverage 正規表現を設定します。
  2. プロジェクトに移動し、設定 > マージリクエストを選択します。
  3. マージリクエスト承認者の下で、Coverage-Check 承認ルールの横にある有効を選択します。
  4. 対象ブランチを選択します。
  5. 必要な承認者数を0以上に設定します。
  6. 承認を行うユーザーまたはグループを選択します。
  7. 承認ルールの追加を選択します。

Coverage-Check approval rule

トラブルシューティング

コードカバレッジからカラーコードを削除

テスト・カバレッジ・ツールの中には、正規表現で正しく解析されない ANSI カラー・コードを出力するものがあります。このため、カバレッジの解析に失敗します。

カバレッジ・ツールの中には、出力のカラーコードを無効にするオプションがないものもあります。その場合は、カバレッジツールの出力を1行のスクリプトにパイプし、カラーコードを除去してください。

使用例:

lein cloverage | perl -pe 's/\e\[?.*?[\@-~]//g'