【问题标题】:Configure Sonar 6.2 code coverage on a Maven project在 Maven 项目上配置 Sonar 6.2 代码覆盖率
【发布时间】:2018-05-07 16:50:26
【问题描述】:

我有非常标准的 Maven 多模块项目(带有 JUnit、Arquillian 和 Selenium 测试)。我在服务器上安装了 Sonar 6.2。在我的 Sonar 项目中,代码覆盖率指标显示为 0.0%。但我知道这是错误的,因为我确实有一些测试覆盖率。

我发现 this Generic Test Data documentation page 解释了自 6.2 以来,Sonar 支持开箱即用的代码覆盖率,我必须将逗号分隔的报告路径列表传递给参数 sonar.coverageReportPaths(我猜是在我的 pom 或命令行中提供的)。

我很好。但是我找不到关于如何为一个非常经典的 Java 项目设置它的示例。我需要在列表中提供什么样的文件?我的每个 Surefire/Failsafe 报告的相对路径?我还需要生成 Jacoco 报告吗?如果我的所有报告都具有相同的名称,我可以提供像 report.xml 这样的“通用”路径吗?

【问题讨论】:

  • 计划升级到 SonarQube 6.7 LTS 版本。
  • @JeroenHeier 升级到 Sonar 6.7 LTS 会有什么帮助?

标签: java maven sonarqube code-coverage


【解决方案1】:

对于标准 Java 项目,使用 JaCoCo 生成覆盖数据然后将其提供给 SonarJava(SonarQube 的用于分析 Java 代码的插件)可能是最简单的。你可以在这里找到文档 https://docs.sonarqube.org/display/PLUG/Code+Coverage+by+Unit+Tests+for+Java+Project

您可能会发现单元测试和集成测试之间的分离,这已被弃用,现在只有一种覆盖范围。

如果有不清楚的地方,请随时联系邮件列表或提出问题,我们正在改进此文档。

【讨论】:

  • 感谢您的回答。因此,如果我理解正确,我必须首先在我的项目中配置 JaCoCo 覆盖,然后将 sonar.junit.reportPathssonar.jacoco.reportPaths 设置为声纳执行的参数,并最终将 sonar.coverageReportPaths 设置为声纳执行(不确定最后一部分是否必要) ?
  • 最后一部分不是必须的,要么你使用 JaCoCo 覆盖,要么使用泛型覆盖,同时使用两者都没有意义。对于 Java 项目,我建议坚持使用 JaCoCo
猜你喜欢
  • 2013-11-12
  • 2012-06-30
  • 2012-06-11
  • 2017-10-24
  • 2017-09-01
  • 2012-12-22
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多