11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソニックガーデン プログラマAdvent Calendar 2024

Day 9

GitHub Actionsで手軽にカバレッジを行単位で可視化する方法

Last updated at Posted at 2024-12-08

はじめに

以前、以下の記事でカバレッジ可視化の方法を紹介しました。

Ruby + GitHub Actions + reviewdogでカバレッジを行単位で可視化する

ただし、以下のような課題がありました。

  • Rubyに依存している
  • セットアップが煩雑
  • プルリクエストで変更のある箇所しかレポート対象とならない

これらの課題を解消するため、よりシンプルで依存の少ないGitHub Actionsを作成したので紹介します。

aki77/reviewdog-action-code-coverage

68747470733a2f2f692e6779617a6f2e636f6d2f61613161326235353539636638336461326232333135656636613864373862352e706e67.png

特徴

シンプルな設定

lcovファイルのパスを指定するだけでセットアップ完了。依存関係もなく、幅広いプロジェクトで活用できます。

並列実行されたテストもサポート

パス指定でglobパターンをサポートしており、複数の並列テスト結果もマージしてレポート可能です。
並列実行を行う大規模プロジェクトにも最適です。

Reviewdogとの連携

reviewdogの仕組みに乗っかる形でカバレッジの可視化を行います。
これにより、GitHub Pull Request上で直感的に問題点を確認できます。

テストカバレッジを直感的に把握できる

コードレビュー時に、 どの部分にテストが書かれていて、どの部分に書かれていないのかを一目で確認可能となります。
これによりレビューの質が向上し、カバレッジを意識したコーディング文化を醸成できます。

Rustで作成したシングルバイナリでlcovファイルを変換

lcovファイルをReviewdog対応のcheckstyleフォーマットに変換するシングルバイナリを別途作成しました。
Rust製であるため、実行が高速でどのプラットフォームでも動作します。
aki77/lcov_to_checkstyle

導入手順

以下の設定例を参考に設定追加するだけで、行単位のカバレッジレポートがPull Request上で確認できるようになります。

coverate.yml
name: Code Coverage
on: [pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run Tests
        run: |
          # テスト実行とlcovファイル生成
          npm run test --coverage

      - name: Report Coverage
        uses: aki77/reviewdog-action-code-coverage@v2
        with:
          lcov_path: coverage/lcov.info

サポートしているInputパラメータ

パラメータ名 説明 初期値 必須
github_token GITHUB_TOKEN ${{ github.token }} no
lcov_path Lcovファイルのパス。(globパターンをサポート) yes
reporter reviewdog commandに渡すreporterオプション [github-check,github-pr-check,github-pr-review]. github-pr-review no
tool_name reviewdog reporterの名前 code-coverage no
delete_previous_comments 繰り返し実行された場合に過去のレポートコメントを削除するかどうか true no

おわりに

octocovと組み合わせることで、外部サービスなしでも効率的にカバレッジを計測・可視化できます。

特に以下のポイントが魅力です。

  • 余計なライブラリやサービスに依存しない
  • 高速で軽量なRust製ツール
  • GitHub Pull Request上で直感的にカバレッジを確認可能

よかったらプロジェクトに導入してみてください。

11
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?