在生成的基础包中排除来自EMMA过滤器的R.java

时间:2014-06-27 15:49:32

标签: android jenkins code-coverage emma

我有一个Android项目,在Jenkins构建上运行EMMA以进行代码覆盖。

我的问题是设置一个过滤器,排除R.java而不排除任何其他R *包和类。

这是我的包布局:

com.akodiakson.base (this pkg and two files come from the gen folder, not an actual part of the code base)
--R.java
--BuildConfig.java
com.akodiakson.base.alpha
com.akodiakson.base.beta
com.akodiakson.base.champ
--Repeat.java
(many other packages)
com.akodiakson.base.roger
(many other packages)

这是我的EMMA过滤器:

<property name="emma.filter" value ="
       +*.akodiakson.base.*, 
       -*.akodiakson.base.*R*"/>

然而,这无意中会排除com.akodiakson.base.roger和Repeat.java

理想情况下,我只需要明确地排除“com.akodiakson.base”而不必显式包含任何其他R * .java类和包(请参阅下面的非理想表达式 - 所有过滤器)。

这不太理想(不包括罗杰):

<property name="emma.filter" value ="
       +*.akodiakson.base.*, 
       -*.akodiakson.base.*R*",
       +*.akodiakson.base.roger.*,
       +*.akodiakson.base.Repeat"/>

我尝试过很多没有太多运气的组合,包括:

-*akodiakson.base.R$
-*akodiakson.base.R.java
-~.*\.R\$.*

我在这里和“6.2。覆盖过滤器”中看到了所有规范的帖子

此过滤器位于我的测试项目的构建文件中。

任何智慧的话语?

1 个答案:

答案 0 :(得分:0)

您是否尝试过将属性更改为这样?

<property name="emma.filter" value ="
       +*.akodiakson.base.*, 
       -*.akodiakson.base.R.java"/>