在Gradle构建中从EMMA中排除类

时间:2012-06-19 09:43:39

标签: build code-coverage gradle emma

我使用Gradle 1.0构建我的项目,并使用EMMA插件获取代码覆盖率信息。我想从覆盖率报告中排除某些文件。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您是否包含此Gradle script?我认为您可以在仪器定义中排除类(请参阅下面的示例)。但是,看起来您不能使用约定属性设置排除模式。

ant.emma(enabled: 'true', verbosity:'info'){
    instr(merge:"true", destdir: emmaInstDir.absolutePath, instrpathref:"run.classpath",
          metadatafile: new File(emmaInstDir, '/metadata.emma').absolutePath) {
        instrpath {
            fileset(dir:sourceSets.main.output.classesDir.absolutePath, includes:"**/*.class", excludes:"**/Some*.class")
        }
    }
}

如果我是你,我会尝试分叉插件,向EmmaPluginConvention添加一个新字段,让您设置排除模式,然后在instrpath定义中使用该变量。更改代码并验证其有效后,向作者发送拉取请求。我相信他会加入你的改变。

答案 1 :(得分:0)

这不适用于gradle 1.5。 Emma采用了这样的过滤器:

ant.emma(enabled: 'true', verbosity: $verbosityLevel) {
        instr(merge: "true", destdir: emmaInstDir.absolutePath, instrpathref: "run.classpath",
                metadatafile: new File(emmaInstDir, '/metadata.emma').absolutePath, filter: "-com.someclass.*" ) {
            instrpath {
                fileset(dir: sourceSets.main.output.classesDir.absolutePath, includes: "**/*.class" )
            }
        }
    }

过滤器遵循此页面中的定义: http://emma.sourceforge.net/reference/ch02s06s02.html