mcpField
C
coverage-drop-investigator

coverage-drop-investigator

github.com/proffesor-for-testingテスト・品質51960 回インストール今日更新
リポジトリ

coverage-drop-investigator について

coverage-drop-investigator は、テストカバレッジの低下を調査し、対象を絞ったテストを提案する手順書型スキルです。main との比較や低カバレッジファイルの特定、最近の変更との照合を行います。

主な機能

  1. 01現在のテストカバレッジを測定
  2. 02main とカバレッジを比較
  3. 03カバレッジ順にファイルを表示
  4. 04低カバレッジと最近の変更を照合
  5. 05未カバー箇所へのテストを提案

活用シーン

  1. 01変更後のカバレッジ低下を調査
  2. 02最近編集したファイルの未カバー分岐を特定

インストール

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

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill coverage-drop-investigator

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

詳細

カバレッジ低下の調査

カバレッジの低下を調査するための、手順書形式のスキルです。カバレッジ低下の原因となった変更を特定し、対象を絞ったテストを提案します。

アクティベーション

/coverage-drop-investigator

調査フロー

ステップ 1:現在のカバレッジを測定する
# Generate coverage report
npx jest --coverage --coverageReporters=json-summary

# View summary
cat coverage/coverage-summary.json | jq '.total'
ステップ 2:カバレッジが低下した時期を特定する
# Compare coverage with main branch
git stash && npx jest --coverage --coverageReporters=json-summary
mv coverage/coverage-summary.json coverage/baseline.json
git stash pop && npx jest --coverage --coverageReporters=json-summary

# Compare
jq -s '.[0].total.statements.pct as $baseline | .[1].total.statements.pct as $current | {baseline: $baseline, current: $current, delta: ($current - $baseline)}' coverage/baseline.json coverage/coverage-summary.json
ステップ 3:カバーされていないファイルを特定する
# Find files with lowest coverage
cat coverage/coverage-summary.json | jq 'to_entries | map(select(.key != "total")) | sort_by(.value.statements.pct) | .[0:10] | .[] | {file: .key, statements: .value.statements.pct, branches: .value.branches.pct}'
ステップ 4:最近の変更と対応付ける
# Find recently changed files with low coverage
git diff --name-only main...HEAD | while read file; do
  jq --arg f "$file" '.[$f] // empty | {file: $f, statements: .statements.pct}' coverage/coverage-summary.json
done
ステップ 5:テストを提案する

カバーされていないファイルごとに、以下を特定します。

  1. カバーされていない関数 — 新しいテストケースが必要です
  2. カバーされていない分岐 — 条件分岐のテストケース(if/else の各経路)が必要です
  3. カバーされていない行 — デッドコードまたはエッジケースの不足を示している可能性があります
ステップ 6:報告する
## Coverage Drop Report
- **Current**: {{current_pct}}%
- **Baseline (main)**: {{baseline_pct}}%
- **Delta**: {{delta}}%
- **Files causing drop**:
  | File | Coverage | Changed Lines | Tests Needed |
  |------|----------|--------------|-------------|
  | {{file}} | {{pct}}% | {{lines}} | {{count}} |
- **Recommended action**: {{write_tests / accept_drop / mark_as_excluded}}

組み合わせ

調査後:

  • /qe-test-generation — カバーされていないファイルのテストを生成します
  • /mutation-testing — 既存のテストが実際にバグを検出できることを確認します
  • /coverage-guard — 今後のカバレッジ低下を防ぎます

注意点

  • テストが削除されたのではなく、テストのない新しいコードが追加されたことでカバレッジが低下する場合があります
  • カバレッジ 100% が常に目標とは限りません。ゲッターやセッターではなく、重要な経路に注目してください
  • 分岐カバレッジの低下は、行カバレッジの低下よりも懸念されます。分岐はロジックの経路を示すためです
  • カバレッジツールは生成コードや型定義をカウントする場合があります。coveragePathIgnorePatterns で除外してください

コメント