Java SonarQube扫描仪:真的需要二进制文件吗?
我正在一个java项目上运行SonarQube扫描仪。在属性文件中有一个属性Java SonarQube扫描仪:真的需要二进制文件吗?,java,sonarqube,sonarqube-scan,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 当: 我删除了sonar.java.bi
sonar.java.binaries=**/classes
,用于指定项目的类位置
扫描失败,显示此错误:
ERROR: Error during SonarQube Scanner execution
ERROR: Please provide compiled classes of your project with sonar.java.binaries property
当:
sonar.java.binaries
属性sonar.java.binaries
属性设置为null
sonar.java.binaries=**/classes
,但在项目目录中没有classes dir或有空的classes dirsonar.java.binaries=**/classes
,并创建了一个classes文件夹,将一个伪造文件blablabla.class
javac
生成的Java字节码(Android用户:Jack不提供所需的.class
文件)和所有项目依赖项(jar文件)都是可能的,但会导致更多的误报,也就是说,合法问题将被分析器忽略
从java版本4.12开始,具有多个java文件的java项目需要二进制文件。如果未正确提供,分析将失败并显示消息
请使用sonar.java.binaries属性提供项目的编译类
如果不使用Maven运行分析,请参阅,了解如何提供Java字节码
如您所见,字节码是必需的。如果您没有向分析器提供字节码,那么构建的语法/依赖树将丢失一些数据,并且您会得到更多的误判(应该报告但没有报告的问题)。如果sonar通过运行单元测试来确定代码覆盖率,它需要编译后的类来运行单元测试。你是说Sonar需要这些类只是为了单元测试的覆盖率?你为什么不提供这些类?我是说。如果Sonar正在确定代码覆盖率,那么它需要编译的类。它还可以将编译后的类用于其他用途。我不知道Sonar想要编译类的所有原因。