coverage-drop-investigator について
coverage-drop-investigator は、テストカバレッジの低下を調査し、対象を絞ったテストを提案する手順書型スキルです。main との比較や低カバレッジファイルの特定、最近の変更との照合を行います。
主な機能
- 01現在のテストカバレッジを測定
- 02main とカバレッジを比較
- 03カバレッジ順にファイルを表示
- 04低カバレッジと最近の変更を照合
- 05未カバー箇所へのテストを提案
活用シーン
- 01変更後のカバレッジ低下を調査
- 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:テストを提案する
カバーされていないファイルごとに、以下を特定します。
- カバーされていない関数 — 新しいテストケースが必要です
- カバーされていない分岐 — 条件分岐のテストケース(if/else の各経路)が必要です
- カバーされていない行 — デッドコードまたはエッジケースの不足を示している可能性があります
ステップ 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 で除外してください
コメント
Markdown 対応