mcpField
C
coverage

coverage

github.com/helderbertoテスト・品質1941 回インストール3 日前に更新
リポジトリ

coverage について

未ステージのコード変更に対するテストカバレッジを調べるスキルです。テストとカバレッジレポートを実行し、LCOV データを変更行に対応付けて未カバー箇所を報告します。

主な機能

  1. 01未ステージファイルと変更行の取得
  2. 02CI テストとカバレッジコマンドの実行
  3. 03LCOV カバレッジと変更行の対応付け
  4. 04未カバーのコード行を報告

活用シーン

  1. 01コミット前に変更のテストカバレッジを確認
  2. 02カバレッジのない変更行を特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/helderberto/agent-skills --skill coverage

インストール後、Claude Code で/coverageを入力して読み込まれたか確認します。

同梱ファイルscripts/parse-lcov.py

詳細

カバレッジチェック

コンテキスト

並行して実行します:

  • git diff --name-only — ステージされていないファイルを取得します
  • git diff -U0 --no-color — 変更された行番号を取得します

コマンド

順番に実行します:

  1. npm run test:ci — カバレッジ付きで vitest を実行します
  2. npm run coverage:report — lcov/テキスト形式のレポートを生成します

ワークフロー

  1. ステージされていないファイルと行範囲を取得します(並行して実行):
    • git diff --name-only
    • git diff -U0 --no-color
  2. カバレッジを実行します:
    • npm run test:ci
    • npm run coverage:report
  3. diff を一時ファイルに保存してから、次を実行します:
    git diff -U0 --no-color > /tmp/changes.diff
    python3 scripts/parse-lcov.py --lcov coverage/lcov.info --diff /tmp/changes.diff
    
  4. 標準出力から未カバーの行を報告します:file.ts:42
  5. 標準エラー出力から概要を報告します:変更行のうち X/Y 行がカバーされています

LCOV 形式

coverage/lcov.info を解析します:

SF:src/utils/helper.ts
DA:10,1    # line 10, covered (hit 1 time)
DA:11,0    # line 11, NOT covered
DA:12,5    # line 12, covered (hit 5 times)
end_of_record

主なフィールド:

  • SF: — ソースファイルのパス
  • DA:line,hits — 0 は未カバー、>0 はカバー済み
  • end_of_record — ファイルセクションの終端

SF: のパスを git diff のファイルと照合します。変更された各行について、DA: エントリーを確認します。hits が 0 の場合は、未カバーとして報告します。

正当化の禁止

言い訳反論
「カバレッジは品質を保証しません」そのとおりです。しかし、未カバーのコードは自動検証がまったく行われていないことを意味します。
「設定の変更にすぎません」設定の変更でも本番環境に問題を起こすことがあります。ロジックが含まれるなら、カバレッジを確認してください。
「100%はやりすぎです」100%は求めていません。変更した行がカバーされているか確認してください。
「テストスイートはすでに成功しています」変更箇所が未カバーのままテストスイートが成功していても、誤った安心感につながります。

ルール

  • ステージされていない変更のみを分析します(git diff)
  • コマンドは順番に実行します:test:ci の後に coverage:report
  • lcov データを解析し、変更行と対応付けるには scripts/parse-lcov.py を使用します
  • 未カバーの行を報告します:file.ts:42
  • カバレッジデータがないファイル(コード以外のファイル)は無視します

エラー処理

  • npm run test:ci が失敗した場合 — テストの失敗を報告して停止します
  • coverage/lcov.info が見つからない場合 — テストランナーの設定で coverage.reporter に lcov が含まれていることを確認します
  • git diff が変更なしを返した場合 — チェック対象となるステージされていない変更がないことを報告します

コメント