【问题标题】:Unable to run Sonar with Hybris无法使用 Hybris 运行声纳
【发布时间】:2017-08-06 16:22:44
【问题描述】:

我是 SonarQube 的新手,正在尝试一次性对所有扩展运行分析。我可以单独为扩展成功运行它,但是当我使用 hybris 运行“ant sonar”时,它给了我以下异常:

[echo] - sonar.jdbc.url        : ${sonar.jdbc.url}
[echo] - sonar.projectName        : Superproject
[echo] - sonar.project.key        : superprojectkey
[echo] - sonar.project.version        : 1.0
[echo] - sonar.excludedExtensions        :
[echo] - sonar.language        : java
[echo] *************************************************
[echo]
r:sonar] Apache Ant(TM) version 1.9.1 compiled on May 15 2013
r:sonar] Sonar Ant Task version: 2.1
r:sonar] Loaded from: file:/E:/hybris/bin/platform/resources/ant
r:sonar] INFO: Default locale: "en_IN", source code encoding: "UTF-8"
r:sonar] INFO: Work directory: E:\hybris\bin\platform\.sonar
r:sonar] ERROR: Sonar server 'http://localhost:9000' can not be reached


E:\\hybris\bin\platform\resources\ant\sonar.xml:84: org.sonar.runner.kevinsawicki.Ht
        at org.sonar.runner.kevinsawicki.HttpRequest.code(HttpRequest.java:1392)
        at org.sonar.runner.kevinsawicki.HttpRequest.ok(HttpRequest.java:1417)
        at org.sonar.runner.impl.ServerConnection.downloadString(ServerConnection.java:83)
        at org.sonar.runner.impl.ServerVersion.downloadVersion(ServerVersion.java:49)
        at org.sonar.runner.impl.ServerVersion.version(ServerVersion.java:40)
        at org.sonar.runner.impl.ServerVersion.is35Compatible(ServerVersion.java:64)
        at org.sonar.runner.impl.JarDownloader.download(JarDownloader.java:39)
        at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:59)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:57)
        at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
        at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:71)
        at org.sonar.runner.api.Runner.execute(Runner.java:89)
        at org.sonar.ant.SonarTask.launchAnalysis(SonarTask.java:53)
        at org.sonar.ant.SonarTask.execute(SonarTask.java:48)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.net.ConnectException: Connection refused: connect
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1890)
        at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1885)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1884)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1457)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
        at org.sonar.runner.kevinsawicki.HttpRequest.code(HttpRequest.java:1390)
        ... 44 more

我知道这是一个配置问题,但我找不到 LOG 所说的文件。 还有,为什么需要jdbc url?

谢谢。

【问题讨论】:

  • 您的 SonarQube 服务器是什么版本?
  • 嗨,G.Ann。它是 6.5
  • 您能否edit 包含您的 Ant 配置和目标的问题?
  • 恕我直言,我们对 hybris 声纳的蚂蚁目标也没有运气 -> 幸运的是,我们有自己的包装器,可以使用整个 hybris “ant”-stuff! - 但在您的情况下,您似乎没有正确定义服务器......因为它试图连接到您的本地主机。关于 JDBC url - hybris 有一些非常旧的代码“jalo”,因此它们在生成时可能使用 4.5LTS,此时该属性存在。现在,你只需要提供你的 sonar-url -> 如果你真的想对你的代码进行分析,我建议使用 gradle 或 jenkinsrunner
  • @SimonSchrottner,这就是我不知道该怎么做。它说工作目录位于 hybris 包结构下的某个位置,但我找不到,因此我可以提供声纳服务器 url。

标签: sonarqube hybris sonarqube-scan


【解决方案1】:

我只是写下我们在项目中使用的方法——不完全是我们用 gradle 包装 ant,而是我们如何进行和配置一切。

我们没有使用蚂蚁声纳扫描仪,而是使用 gradle 声纳扫描仪 [1] 或 jenkins 声纳扫描仪 [2],因此在这种情况下,您实际上可以使用声纳扫描仪 [3]。

配置声纳属性:

您可以轻松地将项目根目录中的所有配置放入一个名为 sonar-project.properties 的文件中。

sonar.host.url=<sonar url>
sonar.projectKey=<project key>
sonar.projectName=<project name>

# you could use here java as language, but if you also want to analyse JS and other languages remove it, and adapt the source path to add those too
sonar.language=java

sonar.sources=<path-to-extension>/src,\
    <path-to-extension>/hmc/src,\ 
    <path-to-extension>/web/src,\
sonar.tests=<path-to-extension>/testsrc

sonar.java.binaries=**/classes
sonar.java.libraries=**/*.jar
sonar.java.test.binaries=**/classes
sonar.java.test.libraries=**/*.jar
  1. 这只是一个简单的基本配置 - 因此您还需要在这里定义您的测试插件和路径。
  2. 我添加了 web 和 hmc 的路径,如果您的扩展程序没有使用它们,请将它们删除
  3. 我只是添加了一个扩展,你可以简单地用多个扩展它
  4. 您所做的每一个配置,您都可以简单地放入这个 sonar-project.properties,您甚至可以将其检入您的 VCS,与他人共享。 好处是此设置与您的源相关联,因此如果您有新的扩展程序,您还可以调整声纳设置,并且不需要调整任何构建等。

运行扫描仪

现在您可以通过使用这些项目属性来简单地使用您喜欢的每个跑步者。无论是 jenkins、gradle 还是本地,您只需要确保 sonar-project.properties 文件位于项目的根目录中,并指向正确的文件。

确认

我知道这不是默认的 hybris 方式,也没有使用 hybris 的 ant 目标,但我发现,这种方法比默认方式给了我更多的灵活性!

[1]https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle?src=contextnavpagetreemode

[2]https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins

[3]https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

【讨论】:

    【解决方案2】:

    您确定 Sonarqube 服务器已启动吗?也许手动启动它,并确保在访问 localhost:9000/about 时它在浏览器中可见。 由于根本问题是声纳服务器不可用,所以我会这样做......

    【讨论】:

      【解决方案3】:

      Sonar 主机 URL 是通过名为 sonar.host.url

      的属性配置的

      在我不久前工作的项目中,此属性设置在 hybris\config\local.properties

      INFO: Work directory: E:\hybris\bin\platform.sonar 相关,已记录, 我认为可以使用 sonar.working.directory 设置工作目录,如果未设置,则以某种方式计算为您在日志中看到的目录(即 hybris\bin\platform .声纳

      【讨论】:

        猜你喜欢
        • 2018-10-24
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 2015-07-09
        • 2017-05-24
        • 1970-01-01
        • 2016-11-15
        • 2015-12-19
        相关资源
        最近更新 更多