簡體   English   中英

代理使用ByteBuddy對方法內的對象進行計數

[英]Agent to count objects inside methods using ByteBuddy

我正在尋找一種計數方法,該方法使用ByteBuddy進行字節代碼分析的方法內部調用了多少個不同的對象。 我嘗試使用字符串解析來進行此操作,但這絕對是不可能的。 另外,我已經檢查了AST,但是在執行此操作之前應該先構建代碼,這將花費很多時間。 這樣,如果我可以創建一個代理,那將是更好的選擇。

給出以下代碼:

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

該方法的分析輸出為:(myObj,myObj2)。 由於我是JavaBuddy的新手,因此我的方法是:

創建一個元素匹配器,以查找使用@Test注釋的方法。 攔截它....這是問題所在:我不知道該如何計算那些對象或通過方法語句進行迭代。

有人可以給我一些鏈接或樣品嗎?

為了對方法中的代碼進行檢測,Byte Buddy允許您使用ASM來按指令對代碼進行檢測。 這樣做的原因是,ASM已經是用於字節碼處理的非常好的API,並且沒有真正好的理由將其替換為最終非常相似的東西。

如果您想了解ASM, 他們的網頁提供了很好的文檔。

但是,您打算做的事情很復雜。 基本上,您必須遵循該方法的控制流程,以查看在任何時間點將哪個對象分配給了哪個變量。 另外,某些類無法進行檢測,例如Boolean類,這就是為什么我建議您找到另一種解決問題的方法的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM