排除 jacoco 中 pom.xml 中的配置并排除 sonar 中的文件

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

我有一个 Java Multi maven 项目,我为每个子模块配置了 Jacoco maven 插件,以排除我不需要覆盖率报告的文件。 我虽然成功了,因为我没有看到我在 jacoco 生成的 html 报告中排除的这些文件。 我假设这些类文件已从 jacoco.exec 文件中排除。 现在,我在 SonarQube 中使用这些积累的 jacoco.exec 文件,并且看到了所有子模块的覆盖范围,但是当我输入类详细信息时,我再次看到了我定义要排除的类。 因此,我必须使用 sonar.exclusions 属性再次定义这些排除项,以免在声纳中看到它们。

对于雅可可:

<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 文件中,进而不会显示在声纳中。 但现在看来我必须维护 jacoco 和声纳配置的排除,如果来自不同模块的类会变得一团糟......

我在这里遗漏了什么吗?是这样吗?保持 jacoco 与声纳分离的排除?

提前致谢!

java maven sonarqube code-coverage jacoco
2个回答
5
投票

sonar.exclusions
参数定义扫描仪应忽略哪些文件。这意味着这些文件不会显示在 SonarQube 中。

JaCoCo 代理在测试执行期间会跳过从 JaCoCo 报告中排除的文件。

当扫描仪扫描 JaCoCo 报告中未包含的文件时,它们会显示在 SonarQube 中,但没有代码覆盖率信息。当扫描仪忽略文件(它们的路径匹配

sonar.exclusions
)时,它们不会显示在 SonarQube 中 - 无论它们是否包含在 JaCoCo 报告中。


0
投票

在你的pom文件中你可以定义

<sonar.exclusions>**/JavaProjectApiAModule*</sonar.exclusions>

并在你的 jacoco 中使用它

<configuration>
  <excludes>${sonar.exclusions}</excludes>
</configuration>

只需确保声纳和 jacoco 都能理解

sonar.exclusions
中使用的语法即可。

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