Javaでコードカバレッジツールを実際に作成する方法について説明している本やその他の参考資料を探します。さまざまなテクニックやトリックのいくつか-ソースとバイトコードのインストルメンテーション。
これは、内部でJavaバイトコードを生成するスクリプト言語用です。
Javaでコードカバレッジツールを実際に作成する方法について説明している本やその他の参考資料を探します。さまざまなテクニックやトリックのいくつか-ソースとバイトコードのインストルメンテーション。
これは、内部でJavaバイトコードを生成するスクリプト言語用です。
スクリプト言語はバイトコードを生成しますか?デバッグメタデータを生成しますか?もしそうなら、バイトコードインストルメンテーションはおそらく行く方法です。実際、既存のツールはおそらく機能します(おそらく最小限の変更で)。
class com.foo.Bar.class
Javaで動作するように記述され、がファイルに対応すると想定するようなツールの一般的な問題com/foo/Bar.java
。その仮定を解くのは面倒です。
EMMAは、Javaでのコードカバレッジ収集のためにバイトコードの書き換えを行うClassLoaderです。コーディングスタイルは少しファンキーですが、いくつかのアイデアについてはソースコードを読むことをお勧めします。
スクリプト言語が解釈される場合は、インタープリターにフックする高レベルのクラスローダー(ソースレベル)が必要になります。
さようなら、マック!http://asm.objectweb.org / は別のものです。バイト コード インスツルメンテーションに関する優れたドキュメントですが、カバレッジ ツールを作成することを「直接」目的としたものはありません。ヒントやアイデアがいくつかあるだけです。
また、オープン ソース コード カバレッジ ツールからソースを取得して、そこから学ぶこともできます。
また、BCELのようなものを使用して、バイトコードに実際に存在するソースの行を分析することもできます。空白行やコメントなどがカバーされていないことを報告したくありません。
ColdFusion について話している場合 (タグからだと思います)、これが実行可能かどうかはわかりませんが、ここでは非常に間違っている可能性があります...
IIRC、CFがコンパイルされると、基本的にCFMLの解釈された形式にプレーンな古いJavaソースファイルとしてコンパイルされ、これがクラスにコンパイルされます。したがって、インストルメンテーションは、CFML 自体ではなく、中間バージョンに適用されます。
とはいえ、アドビはコードをステップスルーできるCFデバッガーを手に入れたので、間違っていることを証明してください-CFMLでのコードカバレッジが大好きです。