为什么声纳需要二进制文件(sonar.binaries)

时间:2016-08-17 06:22:45

标签: sonarqube

为什么声纳需要二进制文件(sonar.binaries)?它如何使用二进制文件来完成对二进制文件的操作?

1 个答案:

答案 0 :(得分:15)

sonar.binaries是不推荐使用的属性:您现在应该使用sonar.java.binaries

这个属性由java分析使用(所以我假设你正在分析java代码)。

分析是在源级别逐个文件完成的,为了正确地进行语义分析,java分析器从.class文件中读取外部依赖关系的信息。

具体来说,这就是它的工作原理:分析声明的A.java

class A {
   B b;
}

java分析器将构建类A的语义模型,外部依赖项查找B.class的字节码以完成其语义分析。

为什么这样做?为了解决表达式的类型,可以进行更准确的分析。 (即:回答问题:b.foo()的类型是什么:我们需要找出foo()方法的定义)。

这是对依赖于每个外部依赖项的字节码的实现的有意选择,即使我们有它们的源。