【问题标题】:Why sonar requires binary files (sonar.binaries)为什么声纳需要二进制文件 (sonar.binaries)
【发布时间】:2016-08-17 16:21:01
【问题描述】:

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

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

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

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

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

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

    class A {
       B b;
    }
    

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

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

    这是一个有意选择的实现,以依赖字节码来处理每个外部依赖项,即使我们有它们的源代码。

    【讨论】:

    • 谢谢本,这很有帮助!!..:)
    • 非常感谢!很好的解释
    • 可以避免这种分析,只分析java文件吗?
    • 是的,你可以,但它会使分析功能远没有那么强大,更不用说没用了
    • 为什么只有 Java 而不是像 C 这样的语言?我有一个项目,其中有 10k+ java 源文件,现在我希望在每次代码更改时让声纳运行它。我觉得每次都构建代码库,即使是很小的改变也会降低生产力。有什么解决方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 2012-11-27
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多