java 声纳分析中止,因为“没有文件或目录匹配”目标/类“

2ul0zpep  于 12个月前  发布在  Java
关注(0)|答案(6)|浏览(146)

我正在使用Sonar进行分析,但我得到以下错误:

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

字符串
在我的项目中,我有目标目录,但没有类目录或文件,什么应该在那里的分析工作?

q9rjltbz

q9rjltbz1#

其中一个原因可能是,如果您在构建项目之前进行分析,Sonar无法找到该目录。在开始使用maven构建项目之前,target/classes目录并不存在。
尝试使用此值来解决问题:

sonar.java.binaries=target

字符串

sonar.java.binaries=.

bzzcjhmw

bzzcjhmw2#

有时有些模块不能生成源代码,例如,使用Maven时,这些模块打包为“pom”。
为了避免sonar分析它们,请在sonar.properties中指定属性sonar.modules,其中包含生成源。

clj7thdc

clj7thdc3#

我相信您已经了解了这一点。然而,对于使用Maven构建的Java项目,您需要做以下事情。
如果你使用的路径是“**/target/classes”,那么我们假设你使用的是Maven来构建。你需要执行“mvn clean package”来让你的Sonarqube Scanner工作。
使用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,那么您将其放入属性文件中。)

2o7dmzc5

2o7dmzc54#

对于那些发现自己在这个线程上的可怜的迷失灵魂,当从Gradle 4.x迁移到5.x时,你可能会遇到这个错误,因为classes文件夹从classes重命名为app_classes,它不再是variant/flavor,而是variantFlavor-你可以通过构建你的应用程序并在build文件夹中查看来验证
我不得不在我的构建中更改这个sonarqube属性。gradle
property "sonar.java.binaries", "build/intermediates/app_classes/betaDebug,build/tmp/kotlin-classes/betaDebug"

wecizke3

wecizke35#

来自@bsaunter的答案有效。我必须补充的是,当从gradle 5.x迁移到6.x时,您也可能会遇到此错误,进入您的build/intermediate/javac/debug文件夹并查看生成sonarqube的文件夹,该文件夹的名称可能是“classes”
在你的项目文件夹中的wherever文件上查找这个属性“sona.java.binaries”,并将正确生成的文件夹的值替换为sonarqube。

7cwmlq89

7cwmlq896#

对我来说,它给出这个错误是因为我从github克隆项目后忘记执行maven clean install。所以你也应该在运行sonar命令之前尝试执行“maven clean install”!要执行“maven clean install”,你可以去终端写“maven clean install”

相关问题