【问题标题】:Excluding R.java from EMMA filter when in generated base package在生成的基础包中从 EMMA 过滤器中排除 R.java
【发布时间】:2014-06-27 15:49:32
【问题描述】:

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

我的问题是设置一个排除 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.覆盖过滤器”看到了所有的规范帖子

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

有什么智慧之言吗?

【问题讨论】:

    标签: android jenkins code-coverage emma


    【解决方案1】:

    您是否尝试过将属性更改为如下所示?

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

    【讨论】:

    • 我在“许多组合没有太多运气”部分提到过,再次尝试,但仍然没有运气。 '在理想的解决方案出现之前,我将采用白名单/显式包含策略——忍受另一个开发人员的垮台,可能会添加一个新的包而不是修改白名单。
    猜你喜欢
    • 2020-06-18
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多