以下で説明される通り、Gitlab では MR のコード差分画面で行ごとのコードカバレッジを可視化できます。
この機能を利用するためには Cobertura 形式の XML をカバレッジレポートが必要です。PHP の場合 PHPUnit 9.4 から Cobertura 形式のカバレッジレポートが出力できるので、そのまま利用できます。
ただ・・PHPUnit 9.4 って結構最近ですね。諸般の事情により PHPUnit のバージョンを上げられない場合は Clover 形式の XML を出力して Cobertura 形式に変換すれば良さそうです。
Cobertura 形式や Clover 形式がどういうものなのか詳細は知りませんが、Gitlab の Cobertura XML を処理するコードを見た感じ、Cobertura XML の一部の要素しか抽出していないので、これぐらいなら雰囲気で Clover 形式から変換できそうです。
というわけで、雑に作ってみました。
.gitlab-ci.yml
で次のように設定します。
image: ngyuki/php-dev test: stage: test only: - merge_requests script: - composer install --prefer-dist --no-progress --no-suggest --ansi - phpdbg -qrr vendor/bin/phpunit --coverage-clover=clover.xml - vendor/bin/clover-to-cobertura < clover.xml > cobertura.xml cache: paths: - vendor/ artifacts: reports: cobertura: cobertura.xml
MR のコード差分で次のように表示されます(行番号の右の緑と赤の線)。