Contents
GitHub Actionsによるテストカバレッジの自動計測とは?
GitHub Actionsは、コードの継続的インテグレーション(CI)を自動化するプラットフォームで、テストカバレッジの計測もその一環として実施可能です。テストカバレッジは、ソースコードがテストによってどの程度カバーされているかを示す指標であり、品質管理において不可欠です。最新ツールである reviewdog/action-code-coverage を導入することで、カバレッジレポートの自動生成やPull Request上の可視化が可能になります。
ワークフロー設定ファイルの作成手順
GitHub Actionsでテストカバレッジを自動計測するには、.github/workflowsディレクトリ内にワークフロー設定ファイル(例: coverage.yml)を作成します。このファイルでは、コードの取得、環境構築、テスト実行、レポート生成までのステップを定義します。
設定ファイルの基本構造
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
name: テストカバレッジ計測 on: pull_request: branches: [main] push: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - name: コードをチェックアウト uses: actions/checkout@v3 - name: 環境準備 run: | sudo apt-get update && sudo apt-get install -y lcov - name: テスト実行とカバレッジ計測 run: | # .NET8プロジェクトの場合 dotnet test --collect:"Code Coverage" # Gradleプロジェクトの場合 ./gradlew jacocoTestReport - name: レポート生成 uses: reviewdog/action-code-coverage@latest with: lcovPath: "./coverage/coverage.info" # 実際の出力パスを指定 |
この設定により、プッシュまたはPull Request時に自動でテストが実行され、カバレッジレポートが生成されます。
プロジェクト別カバレッジ計測対応策
プロジェクトごとに利用するツールや手順が異なるため、適切な処理が必要です。以下に主なプロジェクトの計測方法を比較します。
各プロジェクトの計測方法比較
| プロジェクト | 利用ツール | コマンド例 | レポート出力形式 |
|---|---|---|---|
| .NET8 | dotcover | dotnet test --collect:"Code Coverage" |
coverage.info |
| Gradle | JaCoCo | ./gradlew jacocoTestReport |
HTML / XML |
| iOS (MVVM) | xcodebuild | xcodebuild test -enableCodeCoverage YES |
xcresult |
.NET8プロジェクトの計測手順
-
テスト実行とカバレッジ取得を実施します。
bash
dotnet test --collect:"Code Coverage" --framework net8.0 -
生成された
coverage.infoを後続処理に使用します。
Gradleプロジェクトの計測設定
-
build.gradleに JaCoCo タスクを追加します。
groovy
jacocoTestReport {
reports {
html.destination file("build/reports/jacoco/test/html")
}
} -
テスト実行時に自動でレポートが出力されます。
iOS (MVVM)プロジェクトの計測手順
-
Xcodeでテストを実行し、コードカバレッジを有効化します。
bash
xcodebuild test -scheme MyProject -destination "platform=iOS Simulator,name=iPhone 13" -enableCodeCoverage YES -
生成された
xcresultファイルを分析用に保存します。
lcovファイルの自動マージ処理
並列テストを実施するプロジェクトでは、複数の lcov ファイルが生成されるため、グロブパターンで自動マージが必要です。以下に具体的な手順と例を示します。
実装手順
-
生成された
*.infoファイルの一覧を取得します。
bash
find . -name "*.info" -
全ファイルを一括でマージします。
bash
find . -name "*.info" | xargs merge-lcov > coverage-merged.info
マージされた
coverage-merged.infoは、レポート生成やPull Requestへのコメント表示に使用されます。出力形式としてHTML・Markdown・XMLいずれも選択可能です。
Pull Requestでのレビュー可視化実装
reviewdog/action-code-coverage を使用すると、カバレッジの低かったコード部分に自動でコメントを添えてPull Request上に反映させることができます。この機能により、レビュアーは直感的にカバレッジ不足箇所を確認できます。
多形式レポート出力設定ガイド
カバレッジレポートは HTML・Markdown・XML のいずれかの形式で生成可能です。用途に応じて適切な形式を選ぶことが重要です。
|
1 2 3 4 5 6 |
| フォーマット | 利用シーン | 設定方法 | |------------|----------------------------|----------------------------------| | HTML | 可視化・共有向け | `report-coverage --format html` | | Markdown | GitHub Actionsのコメント表示 | `report-coverage --format markdown` | | XML | 連携ツールとの統合 | `report-coverage --format xml` | |
まとめ
本記事では、GitHub Actionsを活用したテストカバレッジレポートの自動生成手順と実装方法について解説しました。具体的には、ワークフロー設定ファイルの作成、プロジェクト固有の計測対応、lcovファイルのマージ処理、Pull Requestでの可視化実装、および多形式レポート出力の方法を網羅しています。
テストカバレッジ自動計測の実現には、ワークフロー設定やツール選定、出力形式の最適化が不可欠です。記事で示した手順に従い、プロジェクトに応じた計測環境を構築してください。