SonarQube 从 6.4 升级到 6.5 会破坏扫描仪 [英] SonarQube upgrade from 6.4 to 6.5 breaks the scanner

查看:24
本文介绍了SonarQube 从 6.4 升级到 6.5 会破坏扫描仪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  1. 我正在使用 sonarQube6.4 并已升级到 6.5
  2. 声纳扫描仪是 3.0.3
  3. 现在升级后扫描仪会在源路径中有 java 文件时失败.如果我不扫描 java 文件,一切正常.
  4. 但是,如果我回滚使用 6.4 版本,一切正常,那么是否有任何回归?这是堆栈跟踪,当我使用 -X 命令运行扫描仪命令时.那么在 6.5 中是否要求提供所有已编译类的位置,有没有办法忽略它.

<块引用>

04:56:21.218 调试:传感器:JavaSquidSensor -> SurefireSensor ->JaCoCoSensor -> SonarJavaXmlFileSensor -> php.ini"文件分析器-> 零覆盖传感器 -> CPD 块索引器 04:56:21.218 信息:传感器 JavaSquidSensor [java] 04:56:21.558 信息:配置的 Java 源版本(sonar.java.source):无 04:56:21.565 信息:JavaClasspath初始化 04:56:21.570 信息:------------------------------------------------------------------------ 04:56:21.571 信息:执行失败 04:56:21.571 信息:------------------------------------------------------------------------ 04:56:21.571 信息:总时间:6.545s 04:56:21.707 信息:最终记忆:51M/1083M 04:56:21.707 信息:------------------------------------------------------------------------ 04:56:21.707 错误:SonarQube 扫描仪执行期间出错org.sonar.squidbridge.api.AnalysisException:请提供编译好的具有 sonar.java.binaries 属性的项目类在 org.sonar.java.JavaClasspath.init(JavaClasspath.java:59)在 org.sonar.java.AbstractJavaClasspath.getElements(AbstractJavaClasspath.java:281)在 org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:141)在 org.sonar.java.JavaSquid.(JavaSquid.java:83)在 org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:83)在 org.sonar.scanner.sensor.SensorWrapper.analysis(SensorWrapper.java:53)在 org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88)在 org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82)在 org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68)在 org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:78)在 org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:179)在 org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144)在 org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129)在 org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:261)在 org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:256)在 org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:245)在 org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144)在 org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129)在 org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47)在 org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84)在 org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144)在 org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129)在 org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:119)在 org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:116)在 org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在 java.lang.reflect.Method.invoke(Method.java:498)在 org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)在 com.sun.proxy.$Proxy0.execute(未知来源)在 org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)在 org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)在 org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:123)在 org.sonarsource.scanner.cli.Main.execute(Main.java:77)在 org.sonarsource.scanner.cli.Main.main(Main.java:61) 04:56:21.710 调试:执行 getVersion 04:56:21.711 调试:执行停止

当我使用 6.4 运行相同的程序时,它运行良好,我在控制台中看到的唯一警告是:

<块引用>

04:52:42.738 警告:未提供依赖项的字节码来分析源文件,您最终可能会得到不太精确的结果.可以使用 sonar.java.libraries 属性提供字节码

解决方案

SonarQube 扫描仪执行期间出错org.sonar.squidbridge.api.AnalysisException:请提供编译好的具有 sonar.java.binaries 属性的项目类

从 SonarJava 4.12 开始,您必须指定 sonar.java.binaries 属性 https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

例子:

声纳扫描仪-Dsonar.projectKey=fr.demo:my-project -Dsonar.sources=.-Dsonar.java.binaries=.

  1. I am on sonarQube6.4 and have upgraded to 6.5
  2. Sonar-scanner is 3.0.3
  3. Now after the upgrade the scanner fails anytime there is a java file in the source path. If I don't scan java files everything works just fine.
  4. However If I rollback an use 6.4 version, everything works fine, so is there any regression? This is the stack trace, when I run the scanner command with -X command. So is it a mandate in 6.5 to provided the location of all compiled classed, is there a way to ignore it.

04:56:21.218 DEBUG: Sensors : JavaSquidSensor -> SurefireSensor -> JaCoCoSensor -> SonarJavaXmlFileSensor -> Analyzer for "php.ini" files -> Zero Coverage Sensor -> CPD Block Indexer 04:56:21.218 INFO: Sensor JavaSquidSensor [java] 04:56:21.558 INFO: Configured Java source version (sonar.java.source): none 04:56:21.565 INFO: JavaClasspath initialization 04:56:21.570 INFO: ------------------------------------------------------------------------ 04:56:21.571 INFO: EXECUTION FAILURE 04:56:21.571 INFO: ------------------------------------------------------------------------ 04:56:21.571 INFO: Total time: 6.545s 04:56:21.707 INFO: Final Memory: 51M/1083M 04:56:21.707 INFO: ------------------------------------------------------------------------ 04:56:21.707 ERROR: Error during SonarQube Scanner execution org.sonar.squidbridge.api.AnalysisException: Please provide compiled classes of your project with sonar.java.binaries property at org.sonar.java.JavaClasspath.init(JavaClasspath.java:59) at org.sonar.java.AbstractJavaClasspath.getElements(AbstractJavaClasspath.java:281) at org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:141) at org.sonar.java.JavaSquid.(JavaSquid.java:83) at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:83) at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53) at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88) at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82) at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68) at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:78) at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:179) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129) at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:261) at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:256) at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:245) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129) at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47) at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129) at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:119) at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:116) at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) at com.sun.proxy.$Proxy0.execute(Unknown Source) at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233) at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151) at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:123) at org.sonarsource.scanner.cli.Main.execute(Main.java:77) at org.sonarsource.scanner.cli.Main.main(Main.java:61) 04:56:21.710 DEBUG: Execution getVersion 04:56:21.711 DEBUG: Execution stop

When I run the same with 6.4, it works fine and the only warning I see in the console is :

04:52:42.738 WARN: Bytecode of dependencies was not provided for analysis of source files, you might end up with less precise results. Bytecode can be provided using sonar.java.libraries property

解决方案

Error during SonarQube Scanner execution org.sonar.squidbridge.api.AnalysisException: Please provide compiled classes of your project with sonar.java.binaries property

Since SonarJava 4.12, you must specify sonar.java.binaries property https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

Example :

sonar-scanner -Dsonar.projectKey=fr.demo:my-project -Dsonar.sources=. -Dsonar.java.binaries=.

这篇关于SonarQube 从 6.4 升级到 6.5 会破坏扫描仪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆