声纳排除/包含

Alv*_*aza 5 java code-coverage maven sonarqube

我正在尝试改善项目的覆盖率报告,并且希望排除某些包,但包括子包。例如,我有这种结构

src/main/java/com/myapp
    ? model
        ? mapper
            ? SomeMapperClass.java
        ? SomeModelClass.java --> exclude this and others...
        ? ...
        ? ClassToInclude.java --> but include this
    ? service
Run Code Online (Sandbox Code Playgroud)

我想排除model包,但包括mapperClassToInclude。有什么方法可以不必逐个添加每个排除的类吗?我想要这样的东西pom.xml

<sonar.coverage.exclusions>
    **/model/**/*.java
</sonar.coverage.exclusions>
<sonar.coverage.inclusions>
    **/model/mapper/**/*.java
    **/model/ClassToInclude.java
<sonar.coverage.inclusions>
Run Code Online (Sandbox Code Playgroud)

任何帮助,指南,选项和/或解决方法,我们感激不尽。预先感谢您的回答。

更新#1

我通过以下方法找到了一种仅使用sonar.coverage.exclusions属性包括子包的方法:

<sonar.coverage.exclusions>
    **/model/*.java
</sonar.coverage.exclusions>
Run Code Online (Sandbox Code Playgroud)

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

G. *_*eam 5

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

也就是说,如果您仔细制作它们,则只有排除项才是可行的,即**/model/*.java而不是**/model/**/*.java.

  • 不幸的是,这不是一个选择,我会接受你的答案。附带说明一下,在未来版本中添加“sonar.coverage.inclusions”属性将是一个很棒的功能,您有任何功能请求站点吗? (3认同)