【问题标题】:SonarQube Scanner: are binaries really needed?SonarQube Scanner:真的需要二进制文件吗?
【发布时间】:2019-09-20 04:58:16
【问题描述】:

我正在一个 java 项目上运行 SonarQube 扫描仪。在属性文件中有一个属性sonar.java.binaries=**/classes 用于指定项目的类位置。

扫描失败并显示此错误:

ERROR: Error during SonarQube Scanner execution
ERROR: Please provide compiled classes of your project with sonar.java.binaries property

何时:

  1. 我删除了sonar.java.binaries 属性
  2. 我将sonar.java.binaries 属性设置为null
  3. 我将属性设置为sonar.java.binaries=**/classes,但在项目目录中没有类目录或有空目录

扫描在以下情况下成功完成:

  1. 我设置了属性sonar.java.binaries=**/classes 并创建了一个classes 文件夹,其中放入了一个伪造文件blabla.class

所以我的问题是:如果扫描仪在没有它们的情况下也可以工作,为什么还需要这些类?

【问题讨论】:

  • 如果声纳通过运行单元测试来确定代码覆盖率,它需要编译的类来运行单元测试。
  • 你的意思是 Sonar 只需要单元测试覆盖的类?
  • 什么原因你不提供课程?
  • 我的意思是我说的。如果 Sonar 正在确定代码覆盖率,那么它需要已编译的类。它也可以将编译的类用于其他用途。我不知道 Sonar 想要编译类的所有原因。

标签: java sonarqube sonarqube-scan


【解决方案1】:

复制自official documentation:

需要 Java 字节码

在不提供javac(Android 用户:Jack 不提供所需的.class 文件)和所有项目依赖项(jar 文件)生成的 Java 字节码的情况下分析 Java 项目是可能的,但会导致增加漏报的数量,即分析器会遗漏合法问题。

从 SonarJava 版本 4.12 开始,具有多个 java 文件的 java 项目需要二进制文件。如果未正确提供,分析将失败并显示消息

Please provide compiled classes of your project with sonar.java.binaries property

如果您不使用 Maven 运行分析,请参阅 Java Plugin and Bytecode 了解如何提供 Java 字节码。

如您所见,字节码是必需的。如果您不向分析器提供字节码,那么构建的语法/依赖关系树将丢失一些数据,并且您会得到更多的误报(应该报告但没有报告的问题)。

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2018-04-30
    • 2011-11-30
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多