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

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

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

例如,我有A类和B类嵌套:

class A {
    ...

    static class B {
        ...
    }
}

jacocoTestReport继续检查覆盖范围,当我想使用此语法忽略jacoco.gradle文件中的覆盖范围(从本文中获悉:How to ignore inner/nested classes with JaCoCo?):([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*"
                    ])
        }))
    }
}

([$必须转义,而在帖子中则不需要,因为当我使用Gradle时他使用Maven)

所以,如何忽略这个内部类?

java gradle jacoco
1个回答
0
投票

最后,我通过几次尝试都找到了答案。就像在另一篇文章中提到的那样,命名模式似乎遵循compiled Java classes命名约定,并且将不需要外部类和内部类之间的.。因此,它应该像A$B。而且,可能会有一些.class干扰(我的猜测),所以我添加了A$B*(对于其他普通类,不需要最后一个*)。

它变成:

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

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

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