GitHub Actionsでソースコードのカバレッジ測定を行う方法

ソフトウェア開発を進めるうえで「ソースコードカバレッジ(コードカバレッジ)」は重要な指標です。これは「テストがコードのどの部分を実際に実行して検証しているか」を数値化したもので、品質向上やバグ未然防止に役立ちます。

一方、GitHub Actions は GitHub 上でビルドやテスト、デプロイなどの処理を自動化できる仕組みです。リポジトリに設定ファイル(ワークフロー)を置くだけで、自動的にテスト実行やレポート生成が可能になります。

本記事では、.NET 8 のプロジェクトを対象に、GitHub Actions を使ってソースコードカバレッジを測定し、HTML/Markdown レポートを自動生成・保存する流れを解説します。

前提条件

  • GitHub Actionsの基本的な知識があること
  • .NETでのアプリ開発・自動テストの知識があること

環境

  • コンソールアプリ(.NET 8)
  • xUnit テスト プロジェクト(.NET 8)

なぜGitHub Actionsを使うのか

コードカバレッジの測定方法は、以下のドキュメントにまとめられています。

learn.microsoft.com

この方法でも問題ないのですが、毎回手動でコマンドを入力すると時間がかかるので、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のソースコードのカバレッジレポートを自動で作成する方法を紹介しました。

テストでカバーできている範囲を把握することで、品質向上に役立ちます。

今回は手動でのトリガーにしましたが、プルリクエストを送信する際などに自動で実行してもいいかもしれません。

参考URL

learn.microsoft.com

zenn.dev

執筆担当者プロフィール
古川 貴浩

古川 貴浩(日本ビジネスシステムズ株式会社)

アプリケーション開発をしています。.NETやAI関連が好きです。

担当記事一覧