我有一个 Java Multi maven 项目,我为每个子模块配置了 Jacoco maven 插件,以排除我不需要覆盖率报告的文件。 我虽然成功了,因为我没有看到我在 jacoco 生成的 html 报告中排除的这些文件。 我假设这些类文件已从 jacoco.exec 文件中排除。 现在,我在 SonarQube 中使用这些积累的 jacoco.exec 文件,并且看到了所有子模块的覆盖范围,但是当我输入类详细信息时,我再次看到了我定义要排除的类。 因此,我必须使用 sonar.exclusions 属性再次定义这些排除项,以免在 Sonar 中看到它们。
对于雅 cocoa :
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*JavaProjectApiModule.class</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
对于 Sonar,我在父 pom.xml 的属性部分中配置:
<sonar.exclusions>
**/JavaProjectApiAModule.java
</sonar.exclusions>
我想一旦我使用 jacoco 配置排除它们,它们将不会被添加到 jacoco.exec 文件中,进而不会显示在 Sonar 中。 但现在看来我必须维护 jacoco 和 Sonar 配置的排除,如果来自不同模块的类会变得一团糟......
我在这里遗漏了什么吗?是这样吗?维护与 Sonar 分离的 jacoco 的排除项?
提前致谢!
最佳答案
sonar.exclusions
参数定义扫描仪应忽略哪些文件。这意味着这些文件不会显示在 SonarQube 中。
在测试执行期间,JaCoCo 代理会跳过从 JaCoCo 报告中排除的文件。
当扫描仪扫描 JaCoCo 报告中未包含的文件时,它们会显示在 SonarQube 中,但没有代码覆盖率信息。当扫描仪忽略文件(它们的路径与 sonar.exclusions
匹配)时,它们不会显示在 SonarQube 中 - 无论它们是否包含在 JaCoCo 报告中。
关于java - 排除 pom.xml 中为 jacoco 配置的内容并排除 sonar 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50758929/