Sonarqube 无法使用Hybris运行声纳

Sonarqube 无法使用Hybris运行声纳,sonarqube,hybris,sonarqube-scan,Sonarqube,Hybris,Sonarqube Scan,我是SonarQube的新手,尝试一次完成所有扩展的分析。我可以单独为扩展成功运行它,但当我使用hybris运行“ant sonar”时,它会给我以下异常: [echo] - sonar.jdbc.url : ${sonar.jdbc.url} [echo] - sonar.projectName : Superproject [echo] - sonar.project.key : superprojectkey [echo] - sonar.proj

我是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
我知道这是一个配置问题,但我找不到日志中显示的文件。 另外,为什么它需要JDBCURL


谢谢。

您确定Sonarqube服务器已启动吗?也许可以手动启动它,并确保在访问locallhost:9000/about时它在浏览器中可见。
由于根本问题是Sonar服务器不可用,因此我希望…

Sonar主机URL是通过名为Sonar.Host.URL的属性配置的

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

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

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

我们使用的不是蚂蚁声纳扫描仪,而是格雷德尔声纳扫描仪[1]或詹金斯声纳扫描仪[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
sonar.host.url=
声纳.投影键=
sonar.projectName=
#您可以在这里使用java作为语言,但如果您还想分析JS和其他语言,请删除它,并调整源路径以添加这些语言
language=java
sonar.sources=/src\
/hmc/src
/web/src\
sonar.tests=/testsrc
sonar.java.binaries=**/classes
sonar.java.libraries=***/.jar
sonar.java.test.binaries=**/classes
sonar.java.test.libraries=***.jar
  • 这只是一个简单的基本配置,所以你也需要在这里定义你的测试插件和路径
  • 我为web和hmc添加了路径,如果您的扩展没有使用它们,请删除它们
  • 我刚刚添加了一个扩展,您可以简单地用多个扩展来扩展它
  • 您所做的每一项配置,都可以简单地放入sonar-project.properties,甚至可以将其签入您的VCS,以便与其他人共享。 好处是该设置与源连接,因此如果您有新的扩展,您也可以调整声纳设置,而不需要调整任何构建等
  • 运行扫描仪 现在,通过使用这些项目属性,您可以简单地使用您喜欢的每个跑步者。无论是jenkins、gradle还是local,您只需要确保
    sonar project.properties
    文件位于项目的根目录中,并指向正确的文件

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

    [1]

    [2]


    [3]

    您的SonarQube服务器是什么版本的?嗨,G.Ann。这是6.5,你能把你的蚂蚁配置和目标包括进来吗?我想我们也没有幸运的发现hybris声纳的蚂蚁目标->幸运的是,我们有我们自己的整个hybris“蚂蚁”包装器-东西可以使用但在您的情况下,看起来您没有正确定义服务器。。。因为它试图连接到您的本地主机。关于JDBCURL-hybris有一些非常古老的代码“jalo”,因此在生成该代码时,可能会使用4.5LTS,而此时该属性已经存在。现在,您只需要提供您的sonar url->如果您真的想对代码进行分析,我建议您使用gradle或jenkinsrunner@SimonSchrottner,这是我不知道该怎么做的。它说工作目录在hybris包结构下的某个地方,但我找不到,因此我可以提供sonar服务器url。