ソフトウェア開発を進めるうえで「ソースコードカバレッジ(コードカバレッジ)」は重要な指標です。これは「テストがコードのどの部分を実際に実行して検証しているか」を数値化したもので、品質向上やバグ未然防止に役立ちます。
一方、GitHub Actions は GitHub 上でビルドやテスト、デプロイなどの処理を自動化できる仕組みです。リポジトリに設定ファイル(ワークフロー)を置くだけで、自動的にテスト実行やレポート生成が可能になります。
本記事では、.NET 8 のプロジェクトを対象に、GitHub Actions を使ってソースコードカバレッジを測定し、HTML/Markdown レポートを自動生成・保存する流れを解説します。
前提条件
- GitHub Actionsの基本的な知識があること
- .NETでのアプリ開発・自動テストの知識があること
環境
- コンソールアプリ(.NET 8)
- xUnit テスト プロジェクト(.NET 8)
なぜGitHub Actionsを使うのか
コードカバレッジの測定方法は、以下のドキュメントにまとめられています。
この方法でも問題ないのですが、毎回手動でコマンドを入力すると時間がかかるので、GitHub Actionsを利用して自動化しました。
ワークフローファイルの作成
以下のように作成します。
今回は、手動でトリガーするように設定しました。
name: Coverage Report Workflow on: workflow_dispatch: jobs: GenerateCoverageReport: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.x - name: Restore dependencies run: dotnet restore - name: Build run: dotnet build --no-restore - name: Test id: test run: dotnet test --no-build --verbosity normal --collect:"XPlat Code Coverage" - name: Find coverage output path run: | cp $(find . -name "coverage.cobertura.xml") . - name: Run ReportGenerator run: | dotnet tool install -g dotnet-reportgenerator-globaltool reportgenerator -reports:"coverage.cobertura.xml" -targetdir:"report" -reporttypes:"Html;MarkdownSummary" echo "$(cat report/Summary.md)" >> $GITHUB_STEP_SUMMARY - uses: actions/upload-artifact@v4 with: name: coverage-report path: report/
結果
上記のフローを実行すると、以下の要約とカバレッジレポートのファイルが出力されます。
要約は内容がSummaryページに表示されます。

Summaryページの最下部でカバレッジレポートをダウンロードすることができます。

より詳しくは、ダウンロードしたレポートファイル(index.htmlなど)をブラウザで開くことで確認できます。
最後に
.NETのソースコードのカバレッジレポートを自動で作成する方法を紹介しました。
テストでカバーできている範囲を把握することで、品質向上に役立ちます。
今回は手動でのトリガーにしましたが、プルリクエストを送信する際などに自動で実行してもいいかもしれません。