我正在使用自定义运行设置文件来控制检查哪些项目的代码覆盖率。我使用了微软提供的默认模板,到目前为止,我已经能够毫无问题地排除我想要的项目。我的下一步行动是从代码覆盖范围中排除添加服务引用时由 Visual Studio 创建的自动生成的 Web 代理类。
这似乎应该与默认的 runsettings 模板一起使用,因为它有一个看起来像这样的部分:
<Attributes>
<Exclude>
<!-- Don’t forget "Attribute" at the end of the name -->
<Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
<Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
<Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
<Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
<Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
</Exclude>
</Attributes>
添加服务引用时创建的所有类都使用 GeneratedCodeAttribute 修饰,因此应将它们全部排除。但是,当我运行代码覆盖率时,它们不会被忽略,因此代码覆盖率会报告一大块未覆盖的代码。我已经多次尝试使用正则表达式,试图让它正确选择属性,但无济于事。
我很感激有关如何: - 让这个属性排除工作 - 一个不需要我排除整个项目或使 runsettings 文件非通用的替代方案(我们想重新使用这个基本文件跨所有项目,无需特定编辑)
仅供参考 - 虽然我了解还有其他代码覆盖工具,但我的目标是让 Visual Studio 能够正常工作,因此在这种情况下,关于切换到另一种工具的建议对我没有帮助。