SonarQube从6.4升级到6.5会破坏扫描仪

时间:2017-08-20 12:00:35

标签: sonarqube sonarqube-scan

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

    04:56:21.218 DEBUG:Sensors:JavaSquidSensor - > SurefireSensor - >   JaCoCoSensor - > SonarJavaXmlFileSensor - >分析器" php.ini"档    - >零覆盖传感器 - > CPD Block Indexer 04:56:21.218 INFO:Sensor JavaSquidSensor [java] 04:56:21.558 INFO:已配置的Java源代码   version(sonar.java.source):none 04:56:21.565 INFO:JavaClasspath   初始化04:56:21.570信息:   -------------------------------------------------- ---------------------- 04:56:21.571 INFO:EXECUTION FAILURE 04:56:21.571 INFO:   -------------------------------------------------- ---------------------- 04:56:21.571 INFO:总时间: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.analyse(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)           at 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)           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)           在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 DEBUG:执行getVersion 04:56:21.711调试:执行   停止

    当我使用6.4运行时,它运行正常,我在控制台中看到的唯一警告是:

      

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

    提供字节码

4 个答案:

答案 0 :(得分:18)

  

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

示例:

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

答案 1 :(得分:1)

错误消息显示:

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

.class文件外,java传感器似乎还需要.java个文件。

你可以:

  • 将这些文件添加到分析中(这样可以为您提供更有价值的声纳结果!)
  • 尝试添加和删除文件以找出问题,哪一段代码会导致问题并将其报告为Sonar Java错误

答案 2 :(得分:0)

即使我在 SonarQube 升级到最新的6.5版本后也面临同样的问题。但在降级 SonarJava 插件(从 4.12到4.11 )之后,它才有效。 希望它会对你有所帮助。

答案 3 :(得分:0)

我也有这个问题,我用以下方式解决了这个问题:

This page提到了一个之前是可选的条目,并在最新更新期间成为强制性条目(4.12)。它说应该设置Jenkins项目设置中的sonar.java.binaries条目。设置后,即使是故障文件夹,也会修复错误,只留下警告,管道将再次运行。

该设置应添加到Jenkins - > “你的项目” - >配置 - >构建 - >执行SonarQube扫描仪 - >分析属性。添加此条目并将其指向您的二进制文件夹。