0

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

我怎样才能做到这一点?

4

2 回答 2

1

你包括这个Gradle 脚本吗?我认为您可以在仪器定义中排除类(参见下面的示例)。但是,您似乎无法使用约定属性设置排除模式。

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定义中使用该变量。更改代码并验证其是否有效后,向作者发送拉取请求。我相信他会接受你的改变。

于 2012-06-19T11:36:15.947 回答
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

于 2013-04-26T21:28:39.923 回答