Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Android中的Ant过滤EMMA生成的测试覆盖率报告中的文件_Android_Ant_Code Coverage_Emma - Fatal编程技术网

如何使用Android中的Ant过滤EMMA生成的测试覆盖率报告中的文件

如何使用Android中的Ant过滤EMMA生成的测试覆盖率报告中的文件,android,ant,code-coverage,emma,Android,Ant,Code Coverage,Emma,我有一个Android项目,我使用Ant和EMMA正确地生成了测试覆盖率报告(我是按照这里的说明完成的:) 我想知道的是如何过滤EMMA生成的报告中出现的文件(例如,R生成的类、已测试库中的文件…) 我在自己的build.xml文件中包括了${sdk.dir}/tools/ant/test_rules.xml和${sdk.dir}/tools/ant/main_rules.xml,并尝试将“-emma instrument”目标更改为: <target name="-emma-instru

我有一个Android项目,我使用Ant和EMMA正确地生成了测试覆盖率报告(我是按照这里的说明完成的:)

我想知道的是如何过滤EMMA生成的报告中出现的文件(例如,R生成的类、已测试库中的文件…)

我在自己的build.xml文件中包括了${sdk.dir}/tools/ant/test_rules.xml和${sdk.dir}/tools/ant/main_rules.xml,并尝试将“-emma instrument”目标更改为:

<target name="-emma-instrument" depends="compile">
    <echo>Instrumenting classes from ${out.absolute.dir}/classes...</echo>
    <!-- It only instruments class files, not any external libs -->
    <emma enabled="true">
        <instr verbosity="${verbosity}"
               mode="overwrite"
               instrpath="${out.absolute.dir}/classes"
               outdir="${out.absolute.dir}/classes">

               <filter excludes="*R*" />
        </instr>
        <!-- TODO: exclusion filters on R*.class and allowing custom exclusion from
             user defined file -->
    </emma>
</target>

正在检测${out.absolute.dir}/classes中的类。。。
我还尝试应用此处指定的EMMA coverage筛选器的另一个变体,但这也不起作用,并且R生成的文件仍然显示在coverage报告中


有人知道如何解决这个问题吗?

更新:从android SDK的r18版本开始,过滤就内置了,请看我对链接问题的回答

有人在问这个问题,你已经走了一半路了。要解决您的问题,请确保您不修改测试项目生成文件,而是修改目标项目的生成文件。我真的不知道android应用程序构建文件中涉及到什么样的ant魔法,但当然在某种程度上,你的目标项目构建文件必须扮演一个重要的角色,所以你必须在目标项目中指定覆盖范围修改,这是合乎逻辑的

我花了整整一个上午来整理这件事,所以我希望它对其他开发人员有一些价值


作为旁注,此功能应该是SDK工具的一部分。

谢谢您的回答。我在testbuild.xml上设置了过滤器。