有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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*"
                    ])
        }))
    }
}

$必须转义,而在post中没有必要,因为我使用Gradle时他使用Maven)

那么,我怎么能忽略这个内部类呢


共 (1) 个答案

  1. # 1 楼答案

    经过几次尝试和失败,我终于找到了答案。似乎命名模式遵循另一篇文章中提到的编译Java类命名约定,并且不需要外部类和内部类之间的.。所以,它应该像A$B。而且,可能有一些.class干扰(我猜),所以我添加了A$B*(对于其他正常类,不需要最后一个*

    因此,它变成:

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

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