Eclipse Neon 的 SonarLint 未连接到 SonarQube 服务器

SonarLint for Eclipse Neon not connection to SonarQube server

我目前无法在 Eclipse Neon 中使用 SonarLint 连接到我的 SonarQube 服务器。 安装细节可以在这个 post 的底部找到。

打开视图通过 Menu/Window/Show View/Other/SonarQube Servers 添加 SonarQube 服务器后,我进入了我的网络界面 url: http://10.231.83.124:9000

然后我添加用于通过网络界面登录的用户名和密码。 当按下按钮 Test Connection 时,我在 SonarQube 控制台中得到以下堆栈跟踪:

无法从服务器 xxx 更新数据:

java.lang.IllegalStateException
    at org.sonarsource.sonarlint.core.container.connected.SonarLintWsClient.handleError(SonarLintWsClient.java:123)
    at org.sonarsource.sonarlint.core.container.connected.validate.ServerVersionAndStatusChecker.fetchServerInfos(ServerVersionAndStatusChecker.java:102)
    at org.sonarsource.sonarlint.core.container.connected.validate.ServerVersionAndStatusChecker.checkVersionAndStatus(ServerVersionAndStatusChecker.java:61)
    at org.sonarsource.sonarlint.core.container.connected.validate.ServerVersionAndStatusChecker.checkVersionAndStatus(ServerVersionAndStatusChecker.java:51)
    at org.sonarsource.sonarlint.core.WsHelperImpl.validateConnection(WsHelperImpl.java:48)
    at org.sonarsource.sonarlint.core.WsHelperImpl.validateConnection(WsHelperImpl.java:43)
    at org.sonarlint.eclipse.core.internal.server.Server.testConnection(Server.java:323)
    at org.sonarlint.eclipse.ui.internal.server.wizard.ServerConnectionTestJob.run(ServerConnectionTestJob.java:44)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)

由于我在网上找不到关于我的问题的任何信息,我现在希望通过 post 在线解决我的问题来获得一些帮助。我可以提供以下额外的背景信息:

eclipse.buildId=4.6.1.M20160907-1200
java.version=1.8.0_111
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -data file:/opt/workspace/ -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.jee.product

由于错误提示内容不可用,我无法通过 Marketplace 安装 SonarLint。这就是为什么我然后从 https://bintray.com/sonarsource/SonarLint-for-Eclipse/releases/3.0.0 手动下载 zip 文件并使用 Menu/Help/Install New Software...

将插件安装到 Eclipse 中的原因

我正在处理 (cat /proc/version):

Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19)

SonarQube服务器版本为:v6.2 服务器安装了以下插件版本(菜单 > 管理 > 系统 > 更新中心 > 已安装:

我可以提供以下有关 eclipse 安装的信息: 版本:Neon.1a 发布 (4.6.1) 构建 ID:20161007-1200

SonarLint的版本是3.0.0.201704111237(见上面下载link: bintray.com/sonarsource/SonarLint-for-Eclipse/releases/3.0.0‌ )。我也可以在提供的 ip 上 ping 我的服务器。根据官网(sonarlint.org/eclipse),SonarLint兼容所有SonarQube 5.6及以上版本。还检查了我正在使用的 Java 版本:java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64 位服务器 VM(内部版本 25.111-b14,混合模式)

org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at sonarsource.bintray.com/SonarLint-for-Eclipse/releases/3.0.0‌​/…. ...Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

问题似乎是 JVM 中缺少证书。要添加证书,请使用以下在线指南:connect2id.com/blog/importing-ca-root-cert-into-jvm-trust-st‌ ore

修复证书问题后,我卸载了插件并使用 Eclipse Marketplace 重新安装。尝试连接到 Sonarqube 服务器时仍然出现相同的错误:

Starting SonarLint for Eclipse 3.0.0.201704111237 SonarLint analysis of file /participant/pom.xml... Starting standalone SonarLint engine 3.0.0.201704111237... Found 0 issue(s) SonarLint analysis of file /participant/src/test/java/de/mycompany/services/an/Particip‌​antTest.java... Found 0 issue(s) SonarLint analysis of project participant (3 files)... Found 3 issue(s) java.lang.IllegalStateException [...]

卸载了 eclipse,重新安装了 ecilpse neon 3 而不是 1a,并通过 Marketplace 安装了插件 SonarLint。点击按钮 "Test connection" 后再次出现同样的问题:它开始列出文件,然后在控制台中生成堆栈跟踪,如最初 post 编辑并显示在我的最后一条评论中。

在设置要连接的服务器时,我输入端口作为 URL 的一部分:10.20.30.40:9000。这个对吗?如果我不提供端口 9000,则会返回错误 503。我还输入了一个错误的 IP,只是为了看看是否收到不同的错误消息。我再次遇到同样的错误 - 没有区别。好像服务器根本不存在,但我可以 ping 服务器。

我还尝试了适用于 IntelliJ 的 SonarLint-Plugin,在连接到服务器时遇到了同样的问题。

我的 SonarQube 服务器的权限设置如下: 我在现有的名为 Anyone 和 sonar-administrators 的群组中添加了一个新群组 myGroup。

全局权限:(顺序 = 管理系统、管理质量配置文件、管理质量门、执行分析、创建项目)

此外,我通过以下方式设置默认模板来配置权限模板:(顺序=浏览、查看源代码、管理问题、管理、执行分析)

非常感谢您的帮助。

此致, 丹尼尔

SonarQube 和SonarLint 需要有兼容的版本。你的 SonarQube 是 6.2,你的 SonarLint 呢?我为旧得多的 SonarQube 安装最新的 SonarLint 时遇到了类似的错误。

另外,抛开任何网络问题,你能ping通你的SonarQube服务器吗?