java - 在 Maven 项目上配置 Sonar 6.2 代码覆盖率

标签 java maven sonarqube code-coverage

我有相当标准的 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 这样的“通用”路径吗?

最佳答案

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

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

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

关于java - 在 Maven 项目上配置 Sonar 6.2 代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47460278/

相关文章:

java - 如何提高Java中搜索特定Google Drive文件的效率?

maven - 如何在 Debug模式下使用maven启动tomcat

maven - 运行 maven 命令时如何禁用控制台消息?

azure - 我们可以使用 sonarqube 通过 azure devops ci/cd 管道从 Terraform 扫描(基础设施即代码)IaC 吗?

java - 尝试反序列化 XML 时无法从 START_OBJECT token 中反序列化 java.lang.String 的实例

java - 用Java画圆

java - 如何添加不重新编译就无法删除的过滤器/AOP方法?

java - 应用 Maven groupId 命名约定

ssl - SonarQube:SSL 的短暂 Diffie-Hellman key 问题较弱

java - 多模块项目中的 sonar-maven-plugin : extending sonar. 源