SonarQube扫描仪:真的需要二进制文件吗?

时间:2019-05-01 16:30:58

标签: java sonarqube sonarqube-scan

我正在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,但在项目目录中没有类dir或有空类

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

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

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

1 个答案:

答案 0 :(得分:0)

official documentation复制:

  

需要Java字节码

     

在不提供What number of groceries do you wish to purchase?3 What grocery would you like to purchase?Apple What grocery would you like to purchase?Banana What grocery would you like to purchase?Orange ['Apple', 'Banana', 'Orange'] 产生的Java字节码的情况下分析Java项目(Android用户:Jack没有提供所需的javac文件),并且所有项目依赖项(jar文件)都是可以的,但是可以导致假阴性的数量增加,即分析仪将遗漏合法问题。

     

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

     

.class

     

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

如您所见,字节码不是必需的。如果您不向分析器提供字节码,则构建的语法/依赖树将丢失一些数据,并且您会得到更多的假阴性(应报告但未报告的问题)。