2016-06-29 7 views
0

バイトコード分析にByteBuddyを使用するメソッド内でいくつのオブジェクトが呼び出されているかを調べる方法を探しています。私は文字列解析でこれを試しましたが、それは絶対不可能です。また、私はASTについてチェックしましたが、それを行う前にコードをビルドする必要があります。何時間もかかるでしょう。これにより、エージェントを作ることができればよいでしょう。この方法のための分析のための出力は次のようになりByteBuddyを使用してメソッド内のオブジェクトをカウントするエージェント

@Test 
public void myMethod(){ 
    Boolean myObj = false; 
    assertTrue(myObj).isTrue(); 
    assertTrue(myObj2).isTrue(); 
} 

:(このmyobj、myObj2)

次のコードを考えます。私がJavaBuddyを使い慣れているので、私のアプローチは次のようになります。

@Testでアノテーションされたメソッドのための要素マッチャーを作成します。 これを傍受する ....問題は次のとおりです。これらのオブジェクトをどのように数えるか、メソッドステートメントを繰り返し実行するかはわかりません。

誰かからサンプルやリンクを教えていただけますか?

答えて

1

メソッド内にコードをインストルメントするために、Byte BuddyではASMを使用してコードをインストラクションに基づいてインストルメントすることができます。この理由は、ASMはバイトコード処理のための非常に優れたAPIであり、やや類似したものに置き換える本当の理由はありません。

ASMについて知りたい場合は、their webpageに素晴らしいドキュメントがあります。

しかし、あなたがしたいことはかなり複雑です。基本的には、メソッドの制御フローに従い、どのオブジェクトがどの時点でどの変数に割り当てられているかを確認する必要があります。また、いくつかのクラスはBooleanクラスのようにインストルメントすることができないため、あなたの問題に対する別のアプローチを見つけることをお勧めします。

関連する問題