【问题标题】:Exclude classes from EMMA in Gradle build在 Gradle 构建中从 EMMA 中排除类
【发布时间】:2012-06-19 09:43:38
【问题描述】:

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

我怎样才能做到这一点?

【问题讨论】:

    标签: build code-coverage gradle emma


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

    【讨论】:

    • 你是对的。我忘了 EMMA 插件不是 Gradle 的官方插件。
    【解决方案2】:

    这不适用于 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-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      相关资源
      最近更新 更多