MSTest 代码分析

MSTest 分析(“MSTESTxxxx”)规则检查 C# 或 Visual Basic 代码的安全性、性能、设计及其他问题

提示

如果使用的是 Visual Studio,则许多分析器规则都有相关的代码修补程序,可以应用它们来纠正问题。 代码修补程序显示在灯泡图标菜单中。

规则按类别进行组织,例如性能使用情况……

从 MSTest.TestFramework 3.7 开始,MSTest.Analyzers NuGet 包是框架的依赖项。 对于早期版本,需要使用 MSTest 元包,或者显式地为 MSTest.Analyzers 添加一个包引用。

MSTestAnalysisMode

从 MSTest 3.8 开始,可以使用名为 MSTestAnalysisMode 的 MSBuild 属性来确定哪些分析器已启用及其严重性。

提示

若要查看每个模式的严重性已启用哪些规则,可以导航到 NuGet 缓存中感兴趣的版本的包,找到 globalconfigs 目录,并打开与分析模式对应的 .globalconfig 文件。 有关查找 NuGet 缓存目录的详细信息,请参阅 管理全局包、缓存和临时文件夹。 在该目录中,找到 mstest.analyzers 目录,然后找到版本(3.8 及更高版本),然后 globalconfigs。 或者,可以从 nuget.org 下载感兴趣的 NuGet 包,并在 NuGet 包资源管理器(Windows 应用)中查看它,也可以直接在 nuGet 包资源管理器的 Web 应用版本中查看

此属性的可用值:

None

此值将所有分析器设置为 none 严重性,禁用所有这些分析器。 然后,可以使用 .editorconfig.globalconfig 文件启用单个分析器。

Default

此设置遵循每个规则的默认记录行为。

  • 默认情况下启用的规则将使用其默认严重性。
  • 默认禁用的规则将使用 none 严重级别。

注释

默认情况下作为警告启用的规则是预期会在运行时引起问题的违规行为。

这是我们期望大多数开发人员使用的模式。 默认情况下启用的具有信 (suggestion) 严重性的规则将升级为警告。 此外,某些规则可能会在 RecommendedAll 模式中被升级为错误。 例如,MSTEST0003:测试方法应具有有效的布局RecommendedAll 模式中升级为错误。

All

此模式比 Recommended更具攻击性。 所有规则作为警告启用。 如 Recommended 模式所述,某些规则可能会在 RecommendedAll 模式中都会升级为错误。 例如,MSTEST0003:测试方法应具有有效的布局RecommendedAll 模式中升级为错误。

类别

设计规则

设计规则将帮助你创建和维护符合适当设计和良好做法的测试套件。

性能规则

性能规则支持高性能测试。

抑制规则

抑制规则支持抑制来自其他规则的诊断。

用法规则

用法规则支持正确使用 MSTest。

MSTESTEXP

MSTest 的多个 API 用 ExperimentalAttribute 修饰。 此属性指示 API 是实验性的,可能会在 MSTest 的未来版本中删除或更改。 该属性用于标识尚未稳定且可能不适合生产使用的 API。

MSTESTEXP 诊断提醒你在代码中使用实验性 API。 若要使用 SuppressMessageAttribute 取消此诊断,请将以下代码添加到项目:

using System.Diagnostics.CodeAnalysis;

[assembly: SuppressMessage("MSTESTEXP", "Justification")]

或者,您可以通过在项目中使用预处理指令并添加以下代码来抑制此诊断。

#pragma warning disable MSTESTEXP
        // API that is causing the warning.
#pragma warning restore MSTESTEXP