やりたいことは、何が新しいコードかを判断し、新しいコードが何らかのテストでカバーされていることを確認することです。
一般に、コード カバレッジの決定は、さまざまなテスト カバレッジ ツールのいずれかを使用して行うことができます。多くのテスト カバレッジ ツールは、アプリケーション全体を単純に再構築してから、テストを実行してカバレッジを判断できます。
私たちの (Semantic Designs の)テスト カバレッジツールのラインは、変更されたファイルのリストから、再計測が必要な個々のファイルだけを特定し、慎重にテストを編成することで、再実行が必要なテストだけを特定できます。これにより、テストを再実行するコストが最小限に抑えられ、全体的なカバレッジ データは同じになります。(実際、これらのツールは、メソッド レベルでの変更に基づいて、どのテストを行う必要があるかを検出します)。
テスト カバレッジ データを取得したら、知りたいのは、特定の新しいコードがいくつかのテストでカバーされていることです。変更されたファイルのカバレッジが 100% であると主張することで、変更されたファイルがわかっている場合は、カバレッジ データをテストするだけでこれをずさんに行うことができます。それはおそらく実際には機能しません。
代わりに、SD のSmart Differencer ツールを利用して、より正確な答えを得ることができます。これらのツールは 2 つの言語ファイルを比較し、言語構文 (ソース行の変更だけでなく、式、ステートメント、宣言、メソッド本体など) と概念編集操作 (移動、コピー、削除、挿入、名前の変更など) を使用して変更箇所を示します。ブロック内識別子)。SmartDifferencer のデルタは、単純な diff ツールから得られるものよりも小さくて細かい傾向があります。
SmartDifferencer の出力から、変更された行のリストを抽出するのは簡単です。ファイルごとに、テストカバレッジデータでカバーされている行との交点を計算できます。変更された行のすべてがカバーされた行のセット内に完全に含まれていない場合、「新しい」コードはテストされていないため、フラグを立てたり、チェックインを停止したり、チェックポリシーに違反していることを通知したりできます。
TestCoverage および SmartDifferencer ツールは、この計算が自動的に行われる状態ですぐに使用できるわけではありませんが、スクリプトを実装するのは非常に簡単です。