Jacoco 和 SonarQube 的 Java 代码覆盖率

问题描述 投票:0回答:1

我们有一个java项目,部署后在本地和云端运行。为了执行代码覆盖,我们使用 Jacoco 和 SonarQube,如下所述:

  1. 在本地我们使用Jacoco来验证测试覆盖率并生成报告。 Jacoco 配置在 POM 文件中指定。 **我们还有一些配置可以通过以下两种不同的方式从计算覆盖范围中排除某些文件:**

    • 使用POM文件中的配置和排除元素来排除 代码覆盖率中的一些包和类。
    • 使用 @Generate 自定义注释,其保留策略为 RUNTIME。
  2. 此外,我们在 Jenkins 管道中使用 Sonar 来计算代码覆盖率。在 jenkins 文件中,我们有以下属性:

    "sonar.java.coveragePlan": "jacoco"
    "sonar.coverage.jacoco.xmlReportPaths": "***/target/site/jacoco/jacoco.xml"
    

所以,我的问题是 - 我已经在 POM 文件中提到了一些 java 类,这些类需要从 Jacoco 代码覆盖率中排除,并且 声纳是否会自行运行代码覆盖率(或者)声纳是否会运行使用 Jacoco 生成的代码覆盖率报告? 另外,声纳能够识别从 Jacoco 代码覆盖率中排除的包和类(或者)我们是否需要明确告诉声纳要从哪些文件中排除代码覆盖率?

java sonarqube jacoco sonarqube-scan
1个回答
0
投票

Jacoco 生成数据报告,SonarQube 提取该报告。如果整个过程没有产生接近您期望的结果,那么首先要验证的是 Jacoco 正在产生什么。它会生成一个 html 文件树,您可以在浏览器中打开该文件树以查看得到的结果。一旦生成正确的数据,请确保 SonarQube 可以找到该数据。

© www.soinside.com 2019 - 2024. All rights reserved.