[英]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.