30

Javaでコードカバレッジツールを実際に作成する方法について説明している本やその他の参考資料を探します。さまざまなテクニックやトリックのいくつか-ソースとバイトコードのインストルメンテーション。

これは、内部でJavaバイトコードを生成するスクリプト言語用です。

4

5 に答える 5

10

スクリプト言語はバイトコードを生成しますか?デバッグメタデータを生成しますか?もしそうなら、バイトコードインストルメンテーションはおそらく行く方法です。実際、既存のツールはおそらく機能します(おそらく最小限の変更で)。

class com.foo.Bar.classJavaで動作するように記述され、がファイルに対応すると想定するようなツールの一般的な問題com/foo/Bar.java。その仮定を解くのは面倒です。

EMMAは、Javaでのコードカバレッジ収集のためにバイトコードの書き換えを行うClassLoaderです。コーディングスタイルは少しファンキーですが、いくつかのアイデアについてはソースコードを読むことをお勧めします。

スクリプト言語が解釈される場合は、インタープリターにフックする高レベルのクラスローダー(ソースレベル)が必要になります。

于 2008-08-10T07:19:47.650 に答える
4

さようなら、マック!http://asm.objectweb.org / は別のものです。バイト コード インスツルメンテーションに関する優れたドキュメントですが、カバレッジ ツールを作成することを「直接」目的としたものはありません。ヒントやアイデアがいくつかあるだけです。

于 2008-08-05T12:50:59.020 に答える
4

また、オープン ソース コード カバレッジ ツールからソースを取得して、そこから学ぶこともできます。

于 2008-08-12T17:58:25.630 に答える
3

また、BCELのようなものを使用して、バイトコードに実際に存在するソースの行を分析することもできます。空白行やコメントなどがカバーされていないことを報告したくありません。

于 2008-09-15T18:36:15.197 に答える
3

ColdFusion について話している場合 (タグからだと思います)、これが実行可能かどうかはわかりませんが、ここでは非常に間違っている可能性があります...

IIRC、CFがコンパイルされると、基本的にCFMLの解釈された形式にプレーンな古いJavaソースファイルとしてコンパイルされ、これがクラスにコンパイルされます。したがって、インストルメンテーションは、CFML 自体ではなく、中間バージョンに適用されます。

とはいえ、アドビはコードをステップスルーできるCFデバッガーを手に入れたので、間違っていることを証明してください-CFMLでのコードカバレッジが大好きです。

于 2008-11-05T23:48:36.733 に答える