我正在使用ASM转换一个针对字节码实现的简单静态分析规则,以便与SonarQube一起使用。
我创建了BaseTreeVisitor
的子类并重写了visitMethodInvocation(MethodInvocationTree tree)
方法。
当它解析像
这样的简单方法时public void someMethod() {
org.fest.assertions.Assertions.assertThat(true);
}
可以从MethodInvocationTree轻松检索被调用方法的完全限定名称和类型。
但是对于链式方法调用,例如
public void someMethod() {
org.fest.assertions.Assertions.assertThat(true).isEqualTo(true);
}
只有终止isEqualTo
方法调用可见。
我如何检测到那个也被调用的断言?
使用ASM检测方法调用很简单。是否应该使用声纳api的另一部分而不是TreeVisitor?
答案 0 :(得分:0)
这个问题是我自己制作的
super.visitMethodInvocation(mit);
未在覆盖中调用visitMethodInvocation
后续调用未被看到。