代码之家  ›  专栏  ›  技术社区  ›  btlog Stefan Wick MSFT

如何忽略代码覆盖率数据生成的代码

  •  17
  • btlog Stefan Wick MSFT  · 技术社区  · 15 年前

    我正在使用Visual Studio 2010,希望从代码覆盖率统计信息中排除生成的服务引用代码。

    我找到了一个 article 2010年之前提到使用debuggernousercode和debuggerhidden属性。我已经试过了,它的工作方式和广告上的一样。debuggernousercode是在类级别设置的,但是在每个生成的服务引用代码文件中生成50多个类,这不是一个有吸引力的选项。

    有人有其他的解决方案吗?

    4 回复  |  直到 10 年前
        1
  •  2
  •   Jonathan Allen    15 年前

    您可以创建一个代码生成器,用 DebuggerNonUserCode 属性。

        2
  •  14
  •   gvlasov    10 年前

    生成的类是部分类。如果在项目中使用相同的命名空间和类声明创建新类,则可以添加 [ExcludeFromCodeCoverage] 属性设置为分部类。这样你就不必回去编辑 Reference.cs 每当刷新引用时都将其归档。

        3
  •  3
  •   beezler    15 年前

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

        4
  •  3
  •   Christian Specht    14 年前

    Reference.cs ,您可以找到现有的属性,例如 [System.Diagnostics.DebuggerStepThroughAttribute()] 搜索并替换为 [System.Diagnostics.DebuggerStepThroughAttribute()][System.Diagnostics.DebuggerNonUserCode()] .
    主要的缺点是,每次更新引用时都必须重做此操作。

    我不明白为什么微软没有使代码覆盖工具足够智能,跳过服务引用生成的代码。