声纳 exclusions/inclusions

Sonar exclusions/inclusions

我正在尝试改进我的项目的覆盖率报告,我想排除一些包 但包括 子包。例如,我有这个结构

src/main/java/com/myapp
    └ model
        └ mapper
            └ SomeMapperClass.java
        └ SomeModelClass.java --> exclude this and others...
        └ ...
        └ ClassToInclude.java --> but include this
    └ service

我想排除 model 包但包括 mapperClassToInclude。有什么方法可以做到这一点而不必将每个排除的 class 一个一个地添加?我想要这样的东西 pom.xml:

<sonar.coverage.exclusions>
    **/model/**/*.java
</sonar.coverage.exclusions>
<sonar.coverage.inclusions>
    **/model/mapper/**/*.java
    **/model/ClassToInclude.java
<sonar.coverage.inclusions>

任何帮助、指南、选项and/or 变通方法都值得赞赏。预先感谢您的回答。

更新 #1

我找到了一种仅使用 sonar.coverage.exclusions 属性 包含子包的方法:

<sonar.coverage.exclusions>
    **/model/*.java
</sonar.coverage.exclusions>

这样你就可以排除 model 中的每个 class,但不排除 model.mapper 中的每个 class。现在我只需要一种方法来解决如何在排除的包中包含特定的 class。

虽然您可以排除 一些文件覆盖范围,但您只能包括 个文件作为整个。也就是说,排除是细粒度的,但包含不是(即 sonar.coverage.inclusions 不存在),所以我认为这不会像您当前尝试的那样工作。

就是说,如果您精心制作排除项,这应该是可行的,即 **/model/*.java 而不是 **/model/**/*.java