sonar-maven-plugin:3.1.1:sonar 升级到 SonarQube 6.0 后分析错误

Posted

技术标签:

【中文标题】sonar-maven-plugin:3.1.1:sonar 升级到 SonarQube 6.0 后分析错误【英文标题】:sonar-maven-plugin:3.1.1:sonar analyze error after upgrade to SonarQube 6.0 【发布时间】:2017-01-21 21:04:20 【问题描述】:

我们刚升级到SQ 6.0,现在一些项目用maven分析时出现如下错误:

[INFO] --- sonar-maven-plugin:3.1.1:sonar (default-cli) @ gitlab-hook-dispatcher ---
[INFO] User cache: C:\Users\frank.jakop\.sonar\cache
[INFO] Load global repositories
[INFO] Load global repositories (done) | time=94ms
[INFO] User cache: C:\Users\frank.jakop\.sonar\cache
[INFO] Load plugins index
[INFO] Load plugins index (done) | time=5ms
[INFO] SonarQube version: 6.0
[INFO] Default locale: "de_DE", source code encoding: "UTF-8"
[INFO] Process project properties
[INFO] Load project repositories
[INFO] Load project repositories (done) | time=162ms
[INFO] Execute project builders
[INFO] Execute project builders (done) | time=1ms
[INFO] Load quality profiles
[INFO] Load quality profiles (done) | time=73ms
[INFO] Load active rules
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.419 s
[INFO] Finished at: 2016-09-14T08:29:20+02:00
[INFO] Final Memory: 67M/495M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.1.1:sonar (default-cli) on project gitlab-hook-dispatcher: Unable to load component class org.sonar.scanner.report.ActiveRulesPublisher: Unable to load component interface org.sonar.api.batch.rule.ActiveRules: NullPointerException -> [Help 1]

跟踪的最后部分是

Caused by: java.lang.NullPointerException
    at org.sonar.scanner.rule.DefaultActiveRulesLoader.readPage(DefaultActiveRulesLoader.java:99)
    at org.sonar.scanner.rule.DefaultActiveRulesLoader.load(DefaultActiveRulesLoader.java:59)
    at org.sonar.scanner.rule.ActiveRulesProvider.load(ActiveRulesProvider.java:102)
    at org.sonar.scanner.rule.ActiveRulesProvider.load(ActiveRulesProvider.java:63)
    at org.sonar.scanner.rule.ActiveRulesProvider.provide(ActiveRulesProvider.java:49)
    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.picocontainer.injectors.MethodInjector.invokeMethod(MethodInjector.java:129)
    at org.picocontainer.injectors.MethodInjector.access$000(MethodInjector.java:39)
    at org.picocontainer.injectors.MethodInjector$2.run(MethodInjector.java:113)
    at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
    at org.picocontainer.injectors.MethodInjector.decorateComponentInstance(MethodInjector.java:120)
    at org.picocontainer.injectors.CompositeInjector.decorateComponentInstance(CompositeInjector.java:58)
    at org.picocontainer.injectors.Reinjector.reinject(Reinjector.java:142)
    at org.picocontainer.injectors.ProviderAdapter.getComponentInstance(ProviderAdapter.java:96)
    at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67)
    ... 72 more

当我们使用 org.codehaus.mojo:sonar-maven-plugin:2.7.1:sonar 时也会发生这种情况,并且似乎是特定于项目的,有些项目有效,有些则无效。

谁能提示这里出了什么问题?

【问题讨论】:

删除 SonarQube 安装中的目录 data/es。它将重新计算所有 ES 索引 我在 5.6.1 上遇到了类似的问题(stacktrace 看起来非常相似,只是行号略有不同)。清除 data/es 文件夹修复它。 我遇到了同样的问题。删除 ES 索引对我有用... 我想补充一下,这个问题可能与版本无关,因为我使用的是org.codehaus.mojo:sonar-maven-plugin:3.2 【参考方案1】:

感谢@teryk-sonarsource-team,只是将其作为答案:

    删除 SonarQube 安装中的目录 data/es。 重新启动 SonarQube。

它将重新计算所有 ES 索引。

这解决了我在 SonarQube 5.6.3 中的问题。

【讨论】:

我遇到了同样的问题,删除“data/es”是解决方案的一部分。但是,我必须重新启动我的 Sonarqube 实例才能生效。非常感谢 @SylvesterAbreu 在回答中明确重新启动。 请注意,重建 ElasticSearch 索引(一如既往)只是一种解决方法。已确定潜在问题,已跟踪@SONAR-8887,并将在未来版本中修复。 我已经在 Ubuntu 的 docker 容器上安装了 Sonarqube。我在哪里可以找到我的 ES 目录。有什么线索吗? 从 Sonar 5.6LTS 升级到 6.7LTS 时,此解决方案对我有用,谢谢!

以上是关于sonar-maven-plugin:3.1.1:sonar 升级到 SonarQube 6.0 后分析错误的主要内容,如果未能解决你的问题,请参考以下文章