使用树访问者查找所有方法调用

时间:2016-11-03 16:10:39

标签: sonarqube5.1

我正在使用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?

1 个答案:

答案 0 :(得分:0)

这个问题是我自己制作的

super.visitMethodInvocation(mit);

未在覆盖中调用visitMethodInvocation后续调用未被看到。

相关问题