【问题标题】:Sonar-runner not importing cobertura coverage.xml report for Groovy/Grails projectSonar-runner 没有为 Groovy/Grails 项目导入 cobertura coverage.xml 报告
【发布时间】:2013-12-20 22:02:00
【问题描述】:

我在声纳之外使用 cobertura 生成了覆盖率报告,并希望“重用”它们并将它们导入声纳。这可能吗?

声纳 3.73 Sonar-Runner 2.3

sonar.projectKey=org.me:artifactname
sonar.projectName=Project Name
sonar.projectVersion=1.0
sonar.sources=src/groovy, grails-app
sonar.language=grvy
sonar.sourceEncoding=UTF-8
sonar.tests=test/unit
sonar.dynamicAnalysis=reuseReports
sonar.core.codeCoveragePlugin=cobertura
sonar.cobertura.reportPath=target/test-reports/cobertura/coverage.xml
sonar.surefire.reportsPath=target/test-reports
sonar.grvy.coveragePlugin=cobertura

coverage.xml 文件确实存在并且位于该路径中。我已经检查了 100 次。

在声纳中填写了单元测试成功信息,但单元测试覆盖率是一个破折号,并且是空白的。

其他的都填好了,复杂度,代码行数......

这是输出的一部分。

15:47:10.837 INFO  - Load module settings
15:47:11.085 INFO  - Quality profile : [name=Sonar way,language=grvy]
15:47:11.103 INFO  - Excluded tests: 
15:47:11.104 INFO  -   **/package-info.java
15:47:11.143 INFO  - Configure Maven plugins
15:47:11.176 INFO  - Compare to previous analysis (2013-12-20)
15:47:11.210 INFO  - Compare over 30 days (2013-11-20, analysis of 2013-12-19 15:41:26.0)
15:47:11.219 INFO  - Compare to previous version
15:47:11.648 INFO  - Base dir: /Users/Shared/Jenkins/Home/jobs/Grails-Sample-Master/workspace
15:47:11.648 INFO  - Working dir: /Users/Shared/Jenkins/Home/jobs/Grails-Sample-Master/workspace/.sonar
15:47:11.648 INFO  - Source dirs: /Users/Shared/Jenkins/Home/jobs/Grails-Sample-Master/workspace/src/groovy
15:47:11.648 INFO  - Source encoding: UTF-8, default locale: en_US
15:47:11.662 INFO  - Sensor GroovySourceImporter...
15:47:11.761 INFO  - Sensor GroovySourceImporter done: 99 ms
15:47:11.761 INFO  - Sensor CpdSensor...
15:47:11.761 INFO  - SonarBridgeEngine is used
15:47:11.763 INFO  - Cross-project analysis disabled
15:47:11.840 INFO  - Sensor CpdSensor done: 79 ms
15:47:11.841 INFO  - Sensor GroovySensor...
15:47:12.855 INFO  - GMetrics completed: 591ms
15:47:12.879 INFO  - Sensor GroovySensor done: 1038 ms
15:47:12.879 INFO  - Sensor Groovy SurefireSensor...
15:47:12.881 INFO  - parsing /Users/Shared/Jenkins/Home/jobs/Grails-Sample-Master/workspace/target/test-reports
15:47:12.978 INFO  - Sensor Groovy SurefireSensor done: 99 ms
15:47:12.978 INFO  - Sensor InitialOpenIssuesSensor...
15:47:12.983 INFO  - Sensor InitialOpenIssuesSensor done: 5 ms
15:47:12.983 INFO  - Sensor ProfileSensor...
15:47:12.993 INFO  - Sensor ProfileSensor done: 10 ms
15:47:12.993 INFO  - Sensor ProfileEventsSensor...
15:47:13.019 INFO  - Sensor ProfileEventsSensor done: 26 ms
15:47:13.019 INFO  - Sensor ProjectLinksSensor...
15:47:13.028 INFO  - Sensor ProjectLinksSensor done: 9 ms
15:47:13.029 INFO  - Sensor VersionEventsSensor...
15:47:13.041 INFO  - Sensor VersionEventsSensor done: 12 ms
15:47:13.041 INFO  - Sensor org.sonar.plugins.artifactsize.ArtifactSizeSensor@52156251...
15:47:13.041 INFO  - The file null does not exist
15:47:13.041 INFO  - Sensor org.sonar.plugins.artifactsize.ArtifactSizeSensor@52156251 done: 0 ms
15:47:13.470 INFO  - Execute decorators...

想法。

【问题讨论】:

  • 这可能是以下线程中描述的情况:forums.gradle.org/gradle/topics/…。 jira.codehaus.org/browse/SONARPLUGINS-2127 的解决方法是使用来自 github.com/Spantree/sonar-groovy 的 Sonar Groovy 插件的修补版本。
  • 不幸的是,他们的插件没有变化。必须有人以可重现的方式进行这项工作。
  • 您确定您使用的是 Spantree 存储库中的快照版本(将内置 -1.0-spantree-SNAPSHOT.jar 复制到您的声纳扩展目录中)?您是否注意到日志中的 Cobertura 传感器?如果该版本没有变化,您可以在 SONARPLUGINS-2127 中发表评论,告诉作者仍然有问题。
  • 使用生态系统 jars 1.4 和 sonar-groovy-plugin-1.0-spantree-SNAPSHOT.jar 全新安装 sonar 3.7.4。没有测试结果或覆盖结果。 sonar-project.properties 的源目录为 data.sonar.sources=grails-app/domain,grails-app/conf 如果我使用 data.sonar.sources=grails-app 运行,那么我会得到测试数据(单元测试成功百分比)但仍然没有覆盖(单元测试覆盖)。
  • 好的,我在运行 sonar-runner 之前运行 mvm clean。呃。 (对于那些在家玩的人,您不想在生成报告后清理它们)。双呸!我必须运行 grails test-app -coverage -xml,然后运行 ​​sonar-runner。

标签: grails groovy sonarqube cobertura


【解决方案1】:

尝试对 cobetura 报告路径属性使用绝对路径。对于 windows 框,您可以尝试使用以下

sonar.cobertura.reportPath=\\target\\test-reports\\cobertura\\coverage.xml

【讨论】:

    【解决方案2】:

    尝试将此块添加到您的 BuildConfig.groovy

    coverage {
        xml = true
    }
    

    【讨论】:

    • coverage.xml 文件存在,所以我认为这不是问题所在。问题最终是在执行声纳之前,干净运行并删除了文件。
    【解决方案3】:

    您需要使用正确的属性键来指定覆盖率xml报告路径:

    sonar.groovy.cobertura.reportPath=target/test-reports/cobertura/coverage.xml
    

    【讨论】:

      猜你喜欢
      • 2015-12-29
      • 2017-12-14
      • 2013-03-27
      • 2014-07-08
      • 1970-01-01
      • 2014-07-30
      • 2013-09-26
      • 1970-01-01
      • 2014-01-21
      相关资源
      最近更新 更多