java - API 与 SonarQube 5.6 和 Java Analyzer 4.0 与 Findbugs 3.3 或 Cobertura 1.6.3 不兼容

标签 java sonarqube findbugs

SonarQube 对我的项目的分析失败了 5.6 ,从版本 3.14 更新 Java 插件 后至 4.0 .

在我的 SonarQube 实例中,在其他插件中,我目前有 Findbugs 插件(版本 3.3)和 Cobertura 插件(1.6.3),它们需要 Java 插件。

查看日志,我收到以下消息:

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.1-build231:sonar (default-cli) 
    on project MyProject: Execution default-cli of goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.1-build231:sonar failed:

    An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin:3.1-build231:sonar: 

    java.lang.NoSuchMethodError:
    org.sonar.plugins.java.api.JavaResourceLocator.findResourceByClassName(Ljava/lang/String;)Lorg/sonar/api/resources/Resource;

...

Caused by: java.lang.NoSuchMethodError: org.sonar.plugins.java.api.JavaResourceLocator.findResourceByClassName(Ljava/lang/String;)Lorg/sonar/api/resources/Resource;
    at org.sonar.plugins.findbugs.FindbugsSensor.analyse(FindbugsSensor.java:108)
    at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:58)
    at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:50)
    at org.sonar.batch.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:83)
    at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:192)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:241)
    at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:236)
    at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:226)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.task.ScanTask.execute(ScanTask.java:47)
    at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:106)
    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
    at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62)
    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.$Proxy21.execute(Unknown Source)
    at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:240)
    at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
    at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:78)
    at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:112)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    ... 20 more

我应该怎么做才能让我的分析不失败?

最佳答案

SonarQube Java Analyzer

4.0 版对其 API 进行了更改,以便与 SonarQube 5.6 LTS 的新 API 保持一致(长期支持)。

不幸的是,这些更改可能会破坏与直接依赖 Java 分析器的插件的兼容性。如果 PMDCheckstyle 插件的最新发布版本不受影响,则 Findbugs 版本 3.3 很遗憾不兼容以及 Cobertura 插件的 1.6.3 版本。

为了解决 Findbugs 的问题,您有以下选择:

对于 Cobertura 插件,更新到版本 >= 1.7(需要 LTS 5.6 和 Java 8),这解决了问题。使用 SonarQube UI 应该可以获得更新。

关于java - API 与 SonarQube 5.6 和 Java Analyzer 4.0 与 Findbugs 3.3 或 Cobertura 1.6.3 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38225515/

相关文章:

java - 在 ArrayList 中查找最大数

java - 是否可以自定义 SonarQube 的文件详细信息屏幕?

msbuild - 如何将 FxCop 分析与新的 MsBuild Sonar runner 一起使用?

c# - 访问 Memory<T> 的底层数组

java - 如何抑制字段或局部变量的 FindBugs 警告?

java - 如何在安装时在maven中自动运行findbugs

java - 是否可以使用 $x 从 Matcher 获取组?

java - Android 上的方法性能

java - jMock 期望未指定

eclipse - FindBugs 3 在 Eclipse Luna 中不起作用