【发布时间】:2016-08-17 16:21:01
【问题描述】:
为什么声纳需要二进制文件(sonar.binaries)?它如何使用二进制文件来完成它对二进制文件所做的事情?
【问题讨论】:
标签: sonarqube
为什么声纳需要二进制文件(sonar.binaries)?它如何使用二进制文件来完成它对二进制文件所做的事情?
【问题讨论】:
标签: sonarqube
sonar.binaries 是一个已弃用的属性:您现在应该使用sonar.java.binaries
此属性由 java 分析使用(所以我假设您正在分析 java 代码)。
分析在源代码级别逐个文件完成,为了正确进行语义分析,java 分析器从.class 文件中读取外部依赖项信息。
具体来说,它是这样工作的:在分析 A.java 时声明:
class A {
B b;
}
java分析器会构建A类的语义模型,对于外部依赖,查找B.class的字节码完成语义分析。
为什么要这样做?为了解决表达式的类型有一个更准确的分析。 (即:回答问题:b.foo() 的类型是什么:我们需要找出 foo() 方法的定义)。
这是一个有意选择的实现,以依赖字节码来处理每个外部依赖项,即使我们有它们的源代码。
【讨论】: