Skip to content

GoのテストカバレッジをGitHubで可視化する方法

This content is a draft and will not be included in production builds.

2026年5月、GitHubの公式機能で、Code Qualityの一部としてテストカバレッジの可視化が行えるようになった。

これまではCoverallsを使っていたときはプライベートリポジトリの利用金額が高い割にうまく使えていなかったり、goverallsでbad response status from coveralls: 422エラーのようにエラーが多くて諦めたりしていた。その代替として octocov を試したときの結果はoctocovで複数のマトリクスに対応すると密結合が避けられないに残っているけれど、痒いところに届かない状態が続いていた。

ここにきてGitHubが公式の機能として提供してきたので、使えるにしろそうでないにしろ、ある種のデファクトにはなるだろうから試してみようと思ってやってみた。まだパブリックプレビューなので変更は入るかもしれない。

必要なコマンド類のインストール

Section titled “必要なコマンド類のインストール”

Code QualityのカバレッジではCobertura XMLフォーマットを要求するので、GoのテストカバレッジをCobertura XMLに変換しなければならない。これは元々 t-yuki/gocover-cobertura があったけれどメンテされていないのでフォークがいくつか出現している。ざっと見た限りでは boumenot/gocover-cobertura が安定して良いだろう。

Terminal window
go get -tool github.com/boumenot/gocover-cobertura

カバレッジを取得したら、それを変換するだけなので簡単にできる。

Terminal window
go test -coverprofile=cover.out -covermode=count
go tool gocover-cobertura <cover.out >cover.xml

Cobertura XMLを取得したら、それをGitHub Actionでアップロードすれば良い。アップロードのためには以下のパーミッションを求められる。

permissions:
contents: read
code-quality: write

アクションはこの通り。

- uses: actions/upload-code-coverage@v1
with:
file: cover.xml
language: Go
label: code-coverage/kaeru

おそらくパブリックプレビューなので許可されていない。待ってみる。