使用 Gradle 时如何忽略 Jacoco 中的内部静态 类

How to ignore inner static classes in Jacoco when using Gradle

我知道如何忽略在他们自己的 .java 文件中定义的 classes,但不知道如何忽略内部 classes。

例如,我有 class A 嵌套 class B:

class A {
    ...

    static class B {
        ...
    }
}

jacocoTestReport 当我想用这种语法在 jacoco.gradle 文件中忽略它们时,会不断检查覆盖率(从 post: 中学习):(setFrom 部分用于 Gradle 的更高版本,其中 classDirectories = files() 已弃用)

apply plugin: "jacoco"

jacoco {
    toolVersion = "0.8.3"
}

jacocoTestReport {
    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: [
                            "com/example/xxx/*",
                            "com/example/xxx/A$.*B*"
                    ])
        }))
    }
}

($必须转义,而在post中就不需要了,因为我用Gradle他用的是Maven)

那么,我怎么能忽略这个内在的class呢?

经过几次尝试和失败,我终于找到了答案。似乎命名模式遵循 compiled Java classes 命名约定 ,如其他 post 所述,而 不会需要在外部 class 和内部 class 之间的 .。所以,它应该像 A$B。而且,可能有一些 .class 干扰(我的猜测),所以我添加了 A$B*(对于其他正常的 classes,不需要最后的 *)。

所以变成:

"com/example/xxx/A$B*"

我希望有一些关于这种排除模式的文档。还没有。