我们有一个java项目,部署后在本地和云端运行。为了执行代码覆盖,我们使用 Jacoco 和 SonarQube,如下所述:
在本地我们使用Jacoco来验证测试覆盖率并生成报告。 Jacoco 配置在 POM 文件中指定。 **我们还有一些配置可以通过以下两种不同的方式从计算覆盖范围中排除某些文件:**
此外,我们在 Jenkins 管道中使用 Sonar 来计算代码覆盖率。在 jenkins 文件中,我们有以下属性:
"sonar.java.coveragePlan": "jacoco"
"sonar.coverage.jacoco.xmlReportPaths": "***/target/site/jacoco/jacoco.xml"
所以,我的问题是 - 我已经在 POM 文件中提到了一些 java 类,这些类需要从 Jacoco 代码覆盖率中排除,并且 声纳是否会自行运行代码覆盖率(或者)声纳是否会运行使用 Jacoco 生成的代码覆盖率报告? 另外,声纳能够识别从 Jacoco 代码覆盖率中排除的包和类(或者)我们是否需要明确告诉声纳要从哪些文件中排除代码覆盖率?
Jacoco 生成数据报告,SonarQube 提取该报告。如果整个过程没有产生接近您期望的结果,那么首先要验证的是 Jacoco 正在产生什么。它会生成一个 html 文件树,您可以在浏览器中打开该文件树以查看得到的结果。一旦生成正确的数据,请确保 SonarQube 可以找到该数据。