1、背景
SonarQube的版本:v25.6.0.109173
SonarScanner的版本:SonarScanner CLI 7.1.0.4889
2、执行的命令行
sonar-scanner -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://10.255.1.2:9000" -D"sonar.token=sqp_06d53222cc21b1394b4a7ed50d77e9" -D"sonar.java.binaries=build/classes"
主要是设置了:-D"sonar.java.binaries=build/classes"
然后执行这个命令之后,报错
主要的错误信息:java.lang.IllegalStateException: No files nor directories matching 'build/classes'
18:59:28.084 INFO Quality profile for java: Sonar way
18:59:28.085 INFO Quality profile for xml: Sonar way
18:59:28.085 INFO ------------- Run sensors on module projectName
18:59:28.367 INFO Load metrics repository
18:59:28.529 INFO Load metrics repository (done) | time=162ms
18:59:31.742 INFO Sensor JavaSensor [java]
18:59:31.842 ERROR Invalid value for 'sonar.java.binaries' property.
18:59:31.927 ERROR Error during SonarScanner Engine execution
java.lang.IllegalStateException: No files nor directories matching 'build/classes'
at org.sonar.java.classpath.AbstractClasspath.getFilesFromProperty(AbstractClasspath.java:125)
at org.sonar.java.classpath.ClasspathForMain.init(ClasspathForMain.java:53)
at org.sonar.java.classpath.AbstractClasspath.getElements(AbstractClasspath.java:316)
at org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:250)
at org.sonar.java.JavaFrontend.<init>(JavaFrontend.java:92)
at org.sonar.plugins.java.JavaSensor.execute(JavaSensor.java:111)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:69)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:80)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:212)
at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:208)
at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:178)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
at org.sonar.scanner.bootstrap.SpringScannerContainer.doAfterStart(SpringScannerContainer.java:339)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:142)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:227)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:206)
at org.sonar.scanner.bootstrap.ScannerMain.runScannerEngine(ScannerMain.java:150)
at org.sonar.scanner.bootstrap.ScannerMain.run(ScannerMain.java:67)
at org.sonar.scanner.bootstrap.ScannerMain.main(ScannerMain.java:53)
18:59:32.127 INFO EXECUTION FAILURE
18:59:32.130 INFO Total time: 3:14.380s
3、我的解决方法
在项目中创建一个文件,把sonar.java.binaries这个参数设置成这个新建的文件夹的路径
比如,我在项目中创建了一个temp文件夹
这样的话,我的执行命令就变成了
sonar-scanner -D"sonar.projectKey=test" -D"sonar.sources=." -D"sonar.host.url=http://10.255.1.2:9000" -D"sonar.token=sqp_06d53222cc21b1394b4a7ed50d77e9" -D"sonar.java.binaries=D:\BawGit\test\service\temp"
然后在执行扫描命令就没问题了
4、特别的地方
以上是我在gradle的工程中发生的,在maven项目中,把sonar.java.binaries设置成"target/classes"就没有问题