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

Ami*_*hik 6 sonarqube

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

ben*_*ico 16

sonar.binaries 是一个弃用的属性:您现在应该使用 sonar.java.binaries

java分析使用此属性(所以我假设您正在分析Java代码).

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

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

class A {
   B b;
}
Run Code Online (Sandbox Code Playgroud)

java分析器将构造类A的语义模型,并且对于外部依赖项,查看字节码B.class以完成其语义分析.

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

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