问题:
我有一个带有贾科科的项目,我希望能够过滤某些类和/或包。
相关文件:
我阅读了下列文件:
官方 贾科科 站点: http://www.eclemma.org/jacoco/index.html
Github
贾科科 ,致力于报道: https://github.com/jacoco/jacoco/wiki/FilteringOptions https://github.com/jacoco/jacoco/issues/14
相关的StackOverflow链接:
JaCoCo &分级过滤选项 (无答案)
使用Sonarrunner和Gradle从Jacoco报告中排除包 (不使用声纳)
JaCoCo -从报表中排除JSP (它似乎适用于maven,我使用的是gradle)
Maven Jacoco配置-将类/包从报告中排除在外 (它似乎适用于maven,我使用的是gradle)
JaCoCo级插件排除 (无法让它工作)
Gradle Jacoco覆盖率报告包括配置中排除的类。 (似乎非常接近,它使用了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"]
}
}
}
问题:
如何在生成 贾科科 覆盖率报告时排除某些包和类?
发布于 2015-04-27 05:25:13
多亏了,Yannick Welsch
在搜索了Google、阅读了Gradle文档并浏览了一些旧的StackOverflow帖子之后,我在官方的gradle论坛上找到了这个答案!
jacocoTestReport {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it, exclude: 'com/blah/**')
}))
}
}
资料来源: https://issues.gradle.org/browse/GRADLE-2955
对于较早的分级版本,< 5.x可能需要使用classDirectories = files(classDirectories.files.collect {
而不是classDirectories.setFrom
我的build.gradle
/Groovy项目的解决方案:
apply plugin: 'java'
apply plugin: 'jacoco'
jacocoTestReport {
reports {
xml {
enabled true // coveralls plugin depends on xml format report
}
html {
enabled true
}
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['codeeval/**',
'crackingthecode/part3knowledgebased/**',
'**/Chapter7ObjectOrientedDesign**',
'**/Chapter11Testing**',
'**/Chapter12SystemDesignAndMemoryLimits**',
'projecteuler/**'])
})
}
}
如您所见,为了过滤几个包,我成功地向exclude:
添加了更多内容。
资料来源: https://github.com/jaredsburrows/CS-Interview-Questions/blob/master/build.gradle
其他项目(如Android)的自定义任务:
apply plugin: 'jacoco'
task jacocoReport(type: JacocoReport) {
reports {
xml {
enabled true // coveralls plugin depends on xml format report
}
html {
enabled true
}
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['codeeval/**',
'crackingthecode/part3knowledgebased/**',
'**/Chapter7ObjectOrientedDesign**',
'**/Chapter11Testing**',
'**/Chapter12SystemDesignAndMemoryLimits**',
'projecteuler/**'])
})
}
}
发布于 2019-01-16 09:31:49
对于Gradle版本5.x,classDirectories = files(...)
给出了一个弃用警告,并且从Gradle 6.0开始根本不起作用--这是排除类的不受欢迎的方式:
jacocoTestReport {
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it, exclude: 'com/exclude/**')
}))
}
}
发布于 2016-06-21 10:37:31
对我来说,和他一起工作很好
test {
jacoco {
excludes += ['codeeval/**',
'crackingthecode/part3knowledgebased/**',
'**/Chapter7ObjectOrientedDesign**',
'**/Chapter11Testing**',
'**/Chapter12SystemDesignAndMemoryLimits**',
'projecteuler/**']
}
}
正如plugin.html#N16E62文档中所指出的,并且在最初被问到的情况下,答案是:
所以如果你问我:这不是一个
excludes = ["projecteuler/**"]
或
excludes += ["projecteuler/**"]
但
excludes = ["**/projecteuler/**"]
若要排除包*.projecteuler.*
和test {}
在项目级别上,而不是嵌套在jacocoTestReport
中。
https://stackoverflow.com/questions/29887805
复制相似问题