不适用于Jacoco Gradle插件的例外情况

时间:2013-11-05 14:50:36

标签: java gradle jacoco

我正在为我的项目设置Jacoco Gradle插件。该插件执行正常并生成覆盖率报告,但它不排除我将被排除的包。

我想要包含的类是com / xxx / ws / hn / **,我想要排除的类是com / xxx / ws / enterprise /**.

这是我的Gradle脚本:

apply plugin: "jacoco"

jacoco {
    toolVersion = "0.6.2.201302030002"
    reportsDir = file("$buildDir/reports/jacoco")
}

test {
    jacoco{
        excludes = ["com/xx/ws/enterprise/**/*"]
        includes = ["com/xxx/ws/hn/**/*"]
        append = false
    }
}

jacocoTestReport {
    dependsOn test
    description = "Generate Jacoco coverage reports after running tests."
    executionData = files('build/jacoco/test.exec')
    reports {
        xml.enabled true
        html.enabled true
    }
}

我在这里遗漏了什么?我尝试了各种排除模式,包括'。'包的分隔符而不是'/',但似乎没有任何效果。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

为了巩固(并验证)Joachim 的答案,我看到了这篇 SO 帖子,发现使用单个通配符指定规范类名、类路径样式(带斜杠,而不是句点)实际上效果很好。例如,这是在我的构建中使用的排除列表,定义为单独的 gradle 文件中的列表:

def testExcl = [
    'android/*',
    'com/android/*',
    'com/nativelibs4java/*',
    'com/ochafik/*',
    'com/fasterxml/*',
    'com/esotericsoftware/*',
    'com/google/*',
    'com/lmax/*',
    'com/sun/*',
    'jdk/*',
    'mockit/*',
    'org/apache/*',
    'org/bridj/*',
    'org/gradle/*',
    'org/hamcrest/*',
    'org/junit/*',
    'org/slf4j/*',
    'sun/*',
    'worker/*',
    '*Test',
    '*TestIntegration',
    '*AllTests',
    '*Suite'
]

我大概尝试了 10 或 12 种其他方式来格式化类名,这是唯一有效的方式。 我不知道为什么像这样简单/基本的东西如此难以搜索并且很难在 Gradle 的上下文中找到明确的答案(即在 JaCoCo 的官方文档之外,其中没有关于 Gradle 集成的文档,但是 Ant 和 Maven集成文档在那里)。

如果其他人试图让 JaCoCo 排除类,希望这会有所帮助。

答案 1 :(得分:0)

我还没有验证这一点,但是当我阅读JaCoCo文档时,它声明可以使用通配符,但所有示例只有一个*,而不是两个,如您的示例所示。

http://www.eclemma.org/jacoco/trunk/doc/agent.html