ほとんどの確立された言語には、信頼できるテスト カバレッジ ツールが用意されていますが、機能の深さは言語ごとに大きく異なります。
また、さまざまな VM とコンパイラはすべて異質な構造を持っているため、コード カバレッジ ツールを作成する作業は、C では Lisp とは大きく異なります。
- Python は
sys.settrace
、実行中の行を直接通知する必要があります - Clover(Java用)は独自のコンパイラを使用し、デバッグメタデータを追加します(最後に使用したときはとにかく)
- Emma (Java 用) には、バイトコードをオンザフライで書き換える ClassLoader があります。
- COVER (Lisp 用) には、コードを計測するための注釈パスがあります。
さまざまな言語のコード カバレッジの実装に興味があります。
どのコード行が実行されたかを追跡できるC0カバレッジに到達するための主なアプローチは何ですか? 上記のネイティブ VM イントロスペクションと静的および動的コード インストルメンテーションについて言及しましたが、他の方法はありますか?
C1 や C2などのより適切なカバレッジ データを取得することは、C0 と比較して言語にとらわれない作業のように思えます。私には大規模なカルノー マップ操作のピシャリです。実際にそれを行う方法に関するベストプラクティスはありますか? ファジネスのような最新の論理手法は役割を果たしますか?
テスト カバレッジで見過ごされがちな側面は、結果をプログラマーに表示することです。これは、C1 および C2 データではますます難しくなります。率直に言って、彼らは C0 の仕事を成し遂げていますが、私はほとんどのテスト カバレッジ インターフェイスに圧倒されています。カバレッジ データ用にどの斬新で直感的なインターフェイスを見たことがありますか?