本文介绍在生成 .NET 应用时禁止显示代码分析中的警告的各种方法。 可以使用此处提供的信息取消代码质量规则、代码样式规则和第三方分析器规则。
小窍门
如果使用 Visual Studio 作为开发环境, 灯泡 菜单提供了生成代码以禁止显示警告的选项。 有关详细信息,请参阅 “禁止冲突”。
禁用规则
可以通过在 EditorConfig 或 AnalyzerConfig none
中将其严重性设置为来禁用导致警告的规则。 此操作将禁用您整个文件或项目的规则,具体取决于您所使用的配置文件的范围。
[*.{cs,vb}]
dotnet_diagnostic.<rule-ID>.severity = none
有关规则严重性的详细信息,请参阅 “配置规则严重性”。
使用预处理器指令
使用 #pragma 警告 (C#) 或禁用 (Visual Basic) 指令来仅抑制特定代码行的警告。
try { ... }
catch (Exception e)
{
#pragma warning disable CA2200 // Rethrow to preserve stack details
throw e;
#pragma warning restore CA2200 // Rethrow to preserve stack details
}
Try
...
Catch e As Exception
#Disable Warning CA2200 ' Rethrow to preserve stack details
Throw e
#Enable Warning CA2200 ' Rethrow to preserve stack details
End Try
使用 SuppressMessageAttribute
可以使用 a SuppressMessageAttribute 来禁止在源文件或项目的全局抑制文件中显示警告(GlobalSuppressions.cs 或 GlobalSuppressions.vb)。 此属性提供一种方法,仅禁止在项目或文件的某些部分显示警告。
属性的 SuppressMessageAttribute 两个必需位置参数是规则的 类别 和 规则 ID。 以下代码片段将 "Usage"
和 "CA2200:Rethrow to preserve stack details"
传递给这些参数。
[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.")]
private static void IgnorableCharacters()
{
try
{
...
}
catch (Exception e)
{
throw e;
}
}
如果将属性添加到全局抑制文件,则可以将抑制 范围限定 为所需的级别,例如 "member"
。 您可以使用 Target 属性来指定应在 API 中禁止显示警告。
[assembly: SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.", Scope = "member", Target = "~M:MyApp.Program.IgnorableCharacters")]
在 属性中,使用您要引用的 API 的 Target
。 有关文档 ID 的信息,请参阅 文档 ID 格式。
若要对未映射到显式提供的用户源的编译器生成代码抑制警告,必须将抑制特性放置在全局抑制文件中。 例如,以下代码消除对由编译器生成的构造函数的违规:
[module: SuppressMessage("Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="MyTools.Type..ctor()")]