Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SonarQube扫描仪:真的需要二进制文件吗?_Java_Sonarqube_Sonarqube Scan - Fatal编程技术网

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

我正在一个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.binaries
    属性
  • 我将
    sonar.java.binaries
    属性设置为
    null
  • 我将属性设置为
    sonar.java.binaries=**/classes
    ,但在项目目录中没有classes dir或有空的classes dir
  • 扫描在以下情况下成功完成:

  • 我设置了属性
    sonar.java.binaries=**/classes
    ,并创建了一个classes文件夹,将一个伪造文件
    blablabla.class
  • 所以我的问题是:如果扫描器在没有这些类的情况下工作,为什么需要这些类呢?

    复制自:

    需要Java字节码

    分析Java项目而不提供由
    javac
    生成的Java字节码(Android用户:Jack不提供所需的
    .class
    文件)和所有项目依赖项(jar文件)都是可能的,但会导致更多的误报,也就是说,合法问题将被分析器忽略

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

    请使用sonar.java.binaries属性提供项目的编译类

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


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

    如果sonar通过运行单元测试来确定代码覆盖率,它需要编译后的类来运行单元测试。你是说Sonar需要这些类只是为了单元测试的覆盖率?你为什么不提供这些类?我是说。如果Sonar正在确定代码覆盖率,那么它需要编译的类。它还可以将编译后的类用于其他用途。我不知道Sonar想要编译类的所有原因。