【问题标题】:Sonar analysis abort because 'No files nor directories matching 'target/classes'声纳分析中止,因为“没有与“目标/类”匹配的文件或目录
【发布时间】:2019-03-02 02:16:18
【问题描述】:

我正在使用 Sonar 执行分析,但出现以下错误:

Error during SonarQube Scanner execution
java.lang.IllegalStateException: No files nor directories matching 'target/classes'

在我的项目中,我有目标目录,但没有类目录或文件,应该在其中进行什么分析?

【问题讨论】:

  • 你应该先编译你的java项目。
  • 您只需要提供“目标”,例如 sonar.java.binaries = target。它对我有用。

标签: java sonarqube


【解决方案1】:

@bsanunter 的答案有效。 我必须补充一点,从 gradle 5.x 迁移到 6.x 时,您也可能会遇到此错误, 进入你的 build/intermediate/javac/debug 文件夹,看看是什么在生成 sonarqube,文件夹的名称可能是“classes”

在项目文件夹中的任何文件上查找此属性“sonar.java.binaries”,并将正确生成的文件夹的值替换为 sonarqube。

【讨论】:

    【解决方案2】:

    其中一个原因可能是如果您在构建项目之前进行分析,Sonar 无法找到该目录。 在您开始使用 maven 构建项目之前,target/classes 目录不存在。

    试试这个值来解决:

    sonar.java.binaries=target
    

    sonar.java.binaries=.
    

    【讨论】:

      【解决方案3】:

      有时某些模块无法生成源代码,例如,使用 Maven,这些模块打包为“pom”。

      为避免声纳分析它们,请在您的 sonar.properties 中指定属性 sonar.modules 以及生成源的那些。

      【讨论】:

        【解决方案4】:

        对于在此线程上发现自己的可怜的失落灵魂,您在从 gradle 4.x 迁移到 5.x 时可能会遇到此错误,因为 classes 文件夹从 classes 重命名为 app_classes 并且不再是 @ 987654323@ 是variantFlavor - 您可以通过构建您的应用并查看构建文件夹来验证

        我必须在我的 build.gradle 中更改这个 sonarqube 属性

        property "sonar.java.binaries", "build/intermediates/app_classes/betaDebug,build/tmp/kotlin-classes/betaDebug"

        【讨论】:

          【解决方案5】:

          我相信你已经想通了。但是,对于使用 Maven 构建的 Java 项目,您需要执行以下操作。

          如果您使用路径“**/target/classes”,那么假设您使用 Maven 进行构建。您将为 Sonarqube 扫描仪执行“mvn clean package”工作。

          一旦您使用 maven 编译并打包到标准目录(“./target/classes”),然后只需将适当的设置传递给扫描仪(通过配置文件或命令行)。下面是一个通过命令行传递的例子。

                  ${scanner_home}/bin/sonar-scanner 
                      -Dsonar.login=<SONAR KEY>
                      -Dsonar.projectKey=<PROJECT KEY>
                      -Dsonar.branch.name=<BRANCH_NAME>
                      -Dsonar.branch.target=<RELEASABLE BRANCH>
                      -Dsonar.sources=./src
                      -Dsonar.java.binaries=./target/classes
          

          请注意,我为 sonar.sources 和 sonar.java.binaries 设置使用了相对路径。我在 Jenkins 构建管道中执行此操作并使其可配置,因为我还构建 PHP 并在构建过程中使用 Composer、Gulp、npm 和其他工具。 (如果您使用的是 SonarQube Scanner for Maven,那么您可以将其放入属性文件中。)

          【讨论】:

            猜你喜欢
            • 2017-05-09
            • 2018-06-23
            • 2016-03-21
            • 1970-01-01
            • 2015-04-23
            • 2011-08-06
            • 2012-12-18
            • 2013-04-23
            • 2017-12-13
            相关资源
            最近更新 更多