Gitの変更から関連テストと手動確認箇所を1コマンドで洗い出すPowerShellツールを作った

Gitで変更を入れたあと、「どのテストを確認すればいいか」を毎回探すのは、思った以上に手間がかかります。

変更したファイル、既存のテスト、設定ファイル、手動で確認すべき画面を、diffとリポジトリの構成から整理する作業です。しかも、テストが見つかったからといって、その変更が十分に検証されているとは限りません。

作ったもの

この作業を機械的に整理する小さなPowerShellツール regression-impact-verifier を作りました。

GitHub: iwadjp/regression-impact-verifier

何をするツールか

  • Gitの変更ファイルを取得する
  • 既存testのファイル名や内容から、deterministicに関連候補を探す
  • 設定変更など、手動smoke確認を検討すべき箇所を整理する
  • 判定理由とevidenceを、毎回同じ形式で出力する

LLMによる推測は使わず、Git metadata、ファイル名、testのパスと内容、package.json のscript名だけを読みます。testそのものは自動実行しません。

classification

  • RELATED_TEST_FOUND — 関連しそうな既存testのfilename/content relationが見つかった
  • NO_RELATED_TEST_FOUND — source-likeな変更に対してdeterministicな関連が見つからなかった
  • MANUAL_SMOKE_RECOMMENDED — 設定など、人間による確認を推奨する変更
  • UNKNOWN — 推測を避けて判定しなかった変更

RELATED_TEST_FOUNDの意味

ここは重要です。RELATED_TEST_FOUND は、関連しそうな既存testが見つかったという意味だけです。

RELATED_TEST_FOUND ≠ covered / safe / regression-protected

実際にそのtestが変更箇所を検証しているか、testが十分か、runtimeで安全かは、このツールからは分かりません。coverage測定やtest adequacyの保証ではなく、レビュー前の候補整理です。

実repoでのdogfood

現在の開発repoで、sourceとtestを同時に変更したcommit、source中心のcommit、docs-only、metadata中心、複数module変更の実commitを確認しました。working treeと変更なしのケースも含めています。

評価は GOOD 4 / MIXED 3 / BAD 0 でした。related test候補を探す手作業は減りましたが、候補が広すぎる場合や、semanticなcoverage判断は人間に残ります。

dogfoodで見つかったbug

  • 内部worktreeのtestを重複して拾っていた
  • test/fixtures のJSON/HTMLをtestと誤認していた
  • clean stateで件数がnullになる可能性があった
  • GitのCRLF warningを失敗として扱う可能性があった
  • suggested npm commandを自動実行し得る設計だった

これらはdogfood中に修正しました。現在のツールはsuggested commandを表示するだけで、自動実行しません。

使い方

リポジトリのルートで実行します。

.\verify-regression-impact.ps1
.\verify-regression-impact.ps1 -BaseRef HEAD~1

通常はworking treeの変更を確認し、-BaseRef を指定すると BaseRef..HEAD の変更を確認します。

Limitations

  • coverageは測定しない
  • test adequacyを保証しない
  • runtime behaviorやproduct riskを推測しない
  • false negativeや、広すぎるrelated candidatesが残ることがある
  • dynamicなimportや実行経路を完全には追跡しない

Privacy / Safety

  • Git状態を変更しないread-only tool
  • testを自動実行しない
  • test生成やLLM推論を行わない
  • source code全体をreportへコピーしない
  • private-dataの内容をtest discoveryで読まない

GitHub

ソースコードとREADMEはGitHubで公開しています。

https://github.com/iwadjp/regression-impact-verifier

変更影響の最終判断や、実際のregression testの実行は、引き続き人間のレビューで行います。