TeamCity 7 中带有 dotCover 的 ExcludeFromCodeCoverage 属性

Posted

技术标签:

【中文标题】TeamCity 7 中带有 dotCover 的 ExcludeFromCodeCoverage 属性【英文标题】:ExcludeFromCodeCoverage attribute with dotCover in TeamCity 7 【发布时间】:2013-11-05 03:08:39 【问题描述】:

我正在尝试更准确地反映我正在处理的项目中的代码覆盖率,但在涉及 Entity Framework 生成的类时遇到了问题。我想从覆盖率统计中排除这些类的构造函数,所以我已将 ExcludeFromCodeCoverage 属性添加到 T4 模板中,该模板会按照我的预期重新生成类,例如

using System.Diagnostics.CodeAnalysis;

public partial class Address

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

    ...

我正在尝试在方法级别添加它,因为有一些包含自定义逻辑的部分类需要测试并包含在代码覆盖率统计中。

根据我的阅读,ExcludeFromCodeCoverage 应该在使用 dotCover 时被自动排除,但我不确定在通过 TeamCity 运行时这是否属实,所以我包含了Attribute filter syntax for code coverage in TeamCity 中提到的过滤器(同时尝试@987654325 @ 和 ExcludeFromCodeCoverageAttribute) 没有运气。

谢谢

【问题讨论】:

【参考方案1】:

我的 TeamCity 版本与您的相同。这对我来说可以。你应该检查你的配置是否正确。

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

-:System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute

标记的成员不应在您的 TeamCity 覆盖报告中显示(对于课程)或标记为绿色/红色。

更多说明请见here

我遇到了类似的问题。我通过添加到我的“代码覆盖率”构建步骤将生成的类排除在覆盖范围之外:

-:assembly=&lt;assembly name&gt;*;type=*&lt;part of generated classname&gt;*;method=*

【讨论】:

此注释与 TeamCity 和 DotCover 没有直接关系,但对于那些使用 DotCover.exe 命令行的人来说,为了排除标有 ExcludeFromCodeCoverage 属性的代码,您应该使用以下 @987654326 @,您不需要像 /Filters= 参数那样使用 -: 语法。

以上是关于TeamCity 7 中带有 dotCover 的 ExcludeFromCodeCoverage 属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TeamCity 的 dotCover 中排除类型和方法?

如何清除TeamCity 7+中待处理的VCS更改?

如何使用 Git 分支支持覆盖 TeamCity 7.1 中的 <default> 分支名称?

带有命令行的 dotCover 过滤器

如何从Jenkins的多个测试项目中获取dotCover覆盖率报告

TeamCity实战:准备工作