はじめに
以前、以下の記事でカバレッジ可視化の方法を紹介しました。
Ruby + GitHub Actions + reviewdogでカバレッジを行単位で可視化する
ただし、以下のような課題がありました。
- Rubyに依存している
- セットアップが煩雑
- プルリクエストで変更のある箇所しかレポート対象とならない
これらの課題を解消するため、よりシンプルで依存の少ないGitHub Actionsを作成したので紹介します。
aki77/reviewdog-action-code-coverage
特徴
シンプルな設定
lcov
ファイルのパスを指定するだけでセットアップ完了。依存関係もなく、幅広いプロジェクトで活用できます。
並列実行されたテストもサポート
パス指定でglobパターンをサポートしており、複数の並列テスト結果もマージしてレポート可能です。
並列実行を行う大規模プロジェクトにも最適です。
Reviewdogとの連携
reviewdogの仕組みに乗っかる形でカバレッジの可視化を行います。
これにより、GitHub Pull Request上で直感的に問題点を確認できます。
テストカバレッジを直感的に把握できる
コードレビュー時に、 どの部分にテストが書かれていて、どの部分に書かれていないのかを一目で確認可能となります。
これによりレビューの質が向上し、カバレッジを意識したコーディング文化を醸成できます。
Rustで作成したシングルバイナリでlcovファイルを変換
lcovファイルをReviewdog対応のcheckstyleフォーマットに変換するシングルバイナリを別途作成しました。
Rust製であるため、実行が高速でどのプラットフォームでも動作します。
aki77/lcov_to_checkstyle
導入手順
以下の設定例を参考に設定追加するだけで、行単位のカバレッジレポートがPull Request上で確認できるようになります。
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上で直感的にカバレッジを確認可能
よかったらプロジェクトに導入してみてください。