繁体   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