【问题标题】:How to ignore generated code from code coverage data如何忽略代码覆盖率数据中生成的代码
【发布时间】:2010-07-26 18:39:59
【问题描述】:

我正在使用 Visual Studio 2010,并希望从我的代码覆盖率统计数据中排除生成的服务参考代码。

我发现一个 article pre 2010 提到使用 DebuggerNonUserCode 和 DebuggerHidden 属性。我已经尝试过了,它可以像宣传的那样工作。 DebuggerNonUserCode 设置在类级别,但在每个生成的服务参考代码文件中生成 50 多个类,这不是一个有吸引力的选项。

有人有其他解决方案吗?

【问题讨论】:

  • 谢谢,这解决了我的问题。

标签: unit-testing visual-studio-2010 code-coverage


【解决方案1】:

生成的类是部分的。如果您在项目中创建具有相同命名空间和类声明的新类,则可以将 [ExcludeFromCodeCoverage] 属性添加到分部类。这样一来,您就不必在刷新参考时返回并编辑 Reference.cs 文件。

【讨论】:

    【解决方案2】:

    Reference.cs 中,您可以找到现有属性,例如[System.Diagnostics.DebuggerStepThroughAttribute()],然后进行搜索并替换为[System.Diagnostics.DebuggerStepThroughAttribute()][System.Diagnostics.DebuggerNonUserCode()]
    主要缺点是每次更新参考时都必须重做。

    我不明白为什么 MS 没有让代码覆盖工具变得足够智能以跳过服务引用生成的代码。

    【讨论】:

      【解决方案3】:

      System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage 可以在类的顶部使用。这是一个糟糕的选择,因为您需要在重新生成代码时重做此操作。也许微软可以在创建服务引用、实体框架类型等时自动为我们做这件事……

      【讨论】:

        【解决方案4】:

        您可以创建一个代码生成器,它发出带有DebuggerNonUserCode 属性的部分类。

        【讨论】:

        • 不幸的是,创建代码生成器、测试等的成本超过了手动将其添加到现有生成代码的成本。谢谢你的想法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-29
        • 2016-10-28
        • 2016-10-15
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多