0

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

给定以下代码:

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

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

创建一个元素匹配器,它将查找带有 @Test 注释的方法。拦截它....这是问题所在:我不知道应该如何计算这些对象或遍历方法语句。

谁能给我一些关于它的链接或样本?

4

1 回答 1

1

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

如果您想了解 ASM,他们的网页提供了很好的文档。

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

于 2016-06-29T20:41:50.633 回答