问题:
我有一个jacoco的项目,我希望能够过滤某些类和/或包 .
相关文档:
我已阅读以下文档:
Official jacoco site: http://www.eclemma.org/jacoco/index.html
Official jacoco docs for gradle: https://gradle.org/docs/current/userguide/jacoco_plugin.html
Official jacoco Github issues, working on coverage: https://github.com/jacoco/jacoco/wiki/FilteringOptions https://github.com/jacoco/jacoco/issues/14
相关StackOverflow链接:
JaCoCo & Gradle - Filtering Options(没有答案)
Exclude packages from Jacoco report using Sonarrunner and Gradle(不使用sonar)
JaCoCo - exclude JSP from report(似乎适用于maven,我正在使用gradle)
Maven Jacoco Configuration - Exclude classes/packages from report not working(它似乎适用于maven,我正在使用gradle)
JaCoCo gradle plugin exclude(无法让这个工作)
Gradle Jacoco - coverage reports includes classes excluded in configuration(似乎非常接近,它使用 doFirst
,对我不起作用)
我尝试过的例子:
apply plugin: 'java'
apply plugin: 'jacoco'
buildscript {
repositories {
mavenCentral()
jcenter()
}
}
repositories {
jcenter()
}
jacocoTestReport {
reports {
xml {
enabled true // coveralls plugin depends on xml format report
}
html {
enabled true
}
}
test {
jacoco {
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpFile = file("$buildDir/jacoco/classpathdumps")
excludes = ["projecteuler/**"] // <-- does not work
// excludes = ["projecteuler"]
}
}
}
问题:
How can I exclude certain packages and classes when generating the jacoco coverage reports?
6 回答
感谢Yannick Welsch:
在搜索Google,阅读Gradle文档并浏览旧的StackOverflow帖子后,我在官方gradle论坛上找到了这个答案!
Source: https://issues.gradle.org/browse/GRADLE-2955
我的build.gradle for Java / Groovy项目的解决方案:
如您所见,我成功地向
exclude:
添加了更多内容,以便过滤一些软件包 .Source: https://github.com/jaredsburrows/CS-Interview-Questions/blob/master/build.gradle
其他项目(如Android)的自定义任务:
Source: https://github.com/jaredsburrows/android-gradle-java-app-template/blob/master/gradle/quality.gradle#L59
对我来说,这很好用
正如https://docs.gradle.org/current/userguide/jacoco_plugin.html#N16E62文件中所述并且最初要求所以答案是:
所以如果你问我:这不是问题
要么
但
排除包
*.projecteuler.*
和
test {}
在项目级别,而不是嵌套在jacocoTestReport
Here是ANT中此问题的解决方案 . 这可以通过在
jacocoTestReport
任务下添加以下内容来调整 . 尽管jacoco没有真正记录这一点,但它似乎是目前过滤测试结果的唯一方法 .这已经有一段时间了,但我刚碰到了这个 . 我正在努力解决所有需要的排除问题 . 我觉得这对我来说简单得多 . 如果您遵循Maven项目布局样式/ src / main / java和/ src / test / java,您只需将 buildDir/classes/main 放在 classDirectories 配置中,如下所示:
对于Gradle 5.0及更高版本,
classDirectories = files(...)
给出了弃用警告 . 这是排除类的非弃用方式:以下代码也不包括覆盖范围验证中的类: