我有一个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。覆盖过滤器”中看到了所有规范的帖子
此过滤器位于我的测试项目的构建文件中。
任何智慧的话语?
答案 0 :(得分:0)
您是否尝试过将属性更改为这样?
<property name="emma.filter" value ="
+*.akodiakson.base.*,
-*.akodiakson.base.R.java"/>