无法与Hybris一起运行Sonar

时间:2017-08-06 16:22:45

标签: sonarqube hybris sonarqube-scan

我是SonarQube的新手,并试图一次性对所有扩展程序运行分析。我能够成功地单独进行扩展,但是当我运行" ant sonar" hybris,它给了我以下例外:

[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?

感谢。

3 个答案:

答案 0 :(得分: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. 即可
  5. 你做的每一个配置,你都可以简单地放入这个sonar-project.properties,你甚至可以将它检入你的VCS,与他人分享。 好处是这个设置与你的源相关联,所以如果你有一个新的扩展你也可以调整声纳设置,而不需要调整任何构建等。
  6. 运行扫描仪

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

    应答

    我知道这不是默认的hybris方式,并且它没有使用hybris的蚂蚁目标,但我发现,这种方法比默认方式更灵活!

    [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

答案 1 :(得分:0)

你确定Sonarqube服务器已经启动了吗?也许手动启动它,并确保在访问locallhost:9000 / about时浏览器中可以看到它。 由于根本问题是没有可用的声纳兵,我会去那...

答案 2 :(得分:0)

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

的属性配置的

在我刚工作的项目上,此属性设置在 hybris \ config \ local.properties

INFO:工作目录:E:\ hybris \ bin \ platform.sonar 相关, 我认为可以使用 sonar.working.directory 设置工作目录,如果没有设置,它会以某种方式计算为您在日志中看到的那个(即 hybris \ bin \ platform .sonar