在TeamCity 7中使用dotCover排除代码覆盖率的ExcludeFromCodeCoverage属性

9

我正在尝试更准确地反映我正在处理的项目中的代码覆盖率,但是在涉及实体框架生成的类时遇到了问题。 我想从覆盖率统计信息中排除这些类的构造函数,因此我已将ExcludeFromCodeCoverage属性添加到重新生成类的T4模板中,结果如我所料。

using System.Diagnostics.CodeAnalysis;

public partial class Address
{
    [ExcludeFromCodeCoverage]
    public Address()
    {
        this.Person = new HashSet<Person>();
    }

    ...
}

我试图在方法级别上添加这个,因为有一些包含自定义逻辑的部分类需要进行测试并包含在代码覆盖率统计中。
从我所了解的情况来看,在使用dotCover时,应该会自动排除ExcludeFromCodeCoverage,但我不确定在通过TeamCity运行时是否也是如此,因此我按照Attribute filter syntax for code coverage in TeamCity中提到的方式(尝试使用ExcludeFromCodeCoverageExcludeFromCodeCoverageAttribute)进行筛选,但没有成功。
谢谢
1个回答

17

我使用的是与你相同的TeamCity版本,它对我来说运行良好。你应该检查你的配置是否正确。

属性过滤器:部分中,你应该指定属性名称。在你的情况下,文本应该是:

-:System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute

标记成员不应该在你的TeamCity覆盖报告中显示为绿色/红色,对于类来说则不应该显示。

更多指令可以在这里找到。

我遇到了类似的问题。通过添加以下内容到我的"代码覆盖"构建步骤中,我将生成的类从覆盖范围中排除:

-:assembly=<assembly name>*;type=*<part of generated classname>*;method=*


4
这条评论并不直接涉及到TeamCity和DotCover,但是对于那些使用DotCover.exe命令行的人来说,为了排除标记有ExcludeFromCodeCoverage属性的代码,你应该使用以下的语句:dotCover.exe analyse ... /AttributeFilters=System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute,你不需要像使用/Filters=参数那样加上-:的语法。 - Tom Hall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接