代理使用ByteBuddy计算方法内的对象

时间:2016-06-29 11:06:57

标签: java instrumentation byte-buddy

我正在寻找一种方法来计算在使用ByteBuddy进行字节代码分析的方法中调用了多少个不同的对象。我尝试使用字符串解析,但这绝对不可能。另外,我已经检查了AST,但是我应该在这之前构建代码,这将花费很多时间。通过这种方式,如果我可以创建一个代理人,那将更为可取。

给出以下代码:

migrate.exe "Fireframework.Web.dll" "Fireframework.Web.Migrations.Configuration" 

VERBOSE: Target database is: 'Fireframework.Model.DatabaseContext' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, **Origin: Convention**).

此方法的分析输出为:(myObj,myObj2)。由于我是JavaBuddy的新手,我的方法是:

创建一个元素匹配器,可以找到使用@Test注释的方法。 拦截它 ....问题在于:我不知道如何计算这些对象或迭代方法陈述。

有人可以给我一些关于它或样品的链接吗?

1 个答案:

答案 0 :(得分:1)

为了在方法中检测代码,Byte Buddy允许您使用ASM来指导代码。这样做的原因是ASM已经是一个非常好的字节码处理API,并没有真正的理由用最终相似的东西替换它。

如果您想了解ASM,their webpage提供了很好的文档。

然而,你打算做的事情非常复杂。您基本上必须遵循方法的控制流程,以查看在任何时间点将哪个对象分配给哪个变量。此外,某些类无法进行检测,例如Boolean类,这就是为什么我建议您找到解决问题的另一种方法。