设置覆盖率过滤器
有时,您可能需要限制覆盖率分析的范围。 例如,如果您参与开发一个包含多个项目和数千个测试的大型应用程序,这样做是有意义的。 在这种情况下,您无需分析解决方案中所有项目(类型、类型成员)的覆盖率,而只需分析与您正在处理的代码相关的部分。 另一个例子是通过排除您当前不感兴趣的节点(命名空间、类或方法)来“减少覆盖率树的噪音”。 在所有这些情况下,您都应该应用覆盖率过滤器。
过滤器类型:
- 运行时覆盖率筛选器
JetBrains Rider 在覆盖率会话期间应用这些过滤器。 使用这些过滤器可以从分析中排除不必要的代码,并减少覆盖率会话的时间。
您可以通过 使用 JetBrains Rider 设置 或通过 向源代码添加注释 来指定运行时覆盖率过滤器。
- 覆盖率结果过滤器
JetBrains Rider 在覆盖率会话结束后将这些过滤器应用于覆盖率结果(覆盖率树)。 使用它们可以排除您当前不想看到的节点。 了解更多
在 JetBrains Rider 设置中指定运行时覆盖率过滤器
使用 JetBrains Rider 设置,您可以为特定的命名空间、项目、类型、类型成员或属性指定运行时覆盖率过滤器。
由于过滤器是在运行时应用的,JetBrains Rider 不会将被过滤的项目包含在覆盖率快照中,也不会在 单元测试覆盖率 窗口中显示它们。
添加运行时覆盖率过滤器
在 Rider 设置中打开过滤器设置页面: 。
在 运行时覆盖率筛选器 中,单击
添加 ... ,位于所需过滤规则旁边:代码分析的唯一范围 :指定要包含在覆盖率分析中的程序集、类和/或方法。 所有其他代码项将被排除。 代码项是彼此独立过滤的。 例如,您可以指定一个方法,并为程序集和类保留星号
*,以仅包含所有程序集和所有类中具有指定名称的方法。代码分析的排除范围 :指定要从覆盖率分析中排除的程序集、类(需要完全限定名称)和/或方法的名称。 代码项是彼此独立过滤的。
不分析使用特性标记的代码 :指定将用于从覆盖率分析中排除符号的类的完全限定属性名称。 例如,
System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute或*.ExcludeFromCodeCoverageAttribute。
在过滤器中指定代码项名称时,您可以使用星号通配符:
*(星号)表示零个或多个字符。例如,您可以在 代码分析的排除范围 中使用
*.测试通配符,以从代码分析中排除所有测试项目。单击 保存 以保存过滤器设置并应用您的修改。
在源代码中指定运行时覆盖率过滤器
指定运行时覆盖率过滤器的另一种方法是向源代码添加注释。 这使您可以从覆盖率分析中排除特定部分的代码。
从覆盖率分析中排除特定代码
在您的项目中,添加对 JetBrains.dotCover.MSBuild NuGet 包的引用。 这是一个仅用于开发的依赖项,不会作为运行时依赖项包含在您的项目中。
注释您希望从分析中排除的代码。 支持以下注释:
// dotcover disable var a = 1; var b = 10; // dotcover enable /* dotcover disable */ var c = 1; /* dotcover enable */ var d = 1; // dotCover disable this line // dotcover disable next line var e = 100;
指定覆盖率结果的过滤器
JetBrains Rider 在覆盖率会话结束后将这些过滤器应用于覆盖率结果。 使用这些筛选器以:
从覆盖率结果中排除节点(命名空间、类、类成员)
重新显示被排除的节点
单击 显示所有节点 链接,位于 单元测试覆盖率窗口 顶部。
从覆盖率结果中排除文件
在 Rider 设置中,打开 。
找到 排除文件掩码 列表。
单击
以为特定文件掩码添加新的排除筛选器。您可以在文件掩码中使用 Ant 风格通配符:
?匹配单个字符(不包括目录分隔符)*匹配零个或多个字符(不包括目录分隔符)**匹配任意数量的字符(包括目录分隔符)/或\匹配目录分隔符,无论操作系统路径格式如何
例如,模式
**Test?\**.*将匹配以下文件:C:\Projects\MyTestX\data\file_one.txt
/home/projects/TestY/file_two.xml
但不包括:
C:\Projects\Test\data\file_one.txt
/home/projects/TestY/file_two
