Отключение предупреждений анализа кода
В этой статье рассматриваются различные способы подавления предупреждений для анализа кода при сборке приложения .NET. Вы можете отключить правила качества кода, правила стиля кода и сторонние правила анализатора, используя приведенные здесь сведения.
Совет
Если вы используете Visual Studio в качестве среды разработки, в меню лампочки есть пункты, при выборе которых будет создан код для подавления предупреждений. Дополнительные сведения см. в разделе Подавление нарушений.
Отключение правила
Вы можете отключить правило, вызывающее предупреждение, задав его серьезность none
в файле конфигурации EditorConfig или AnalyzerConfig. Это действие отключает правило для всего файла или проекта в зависимости от область используемого файла конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.<rule-ID>.severity = none
Дополнительные сведения об уровнях серьезности правил см. в разделе Настройка уровня серьезности правила.
Использование директивы препроцессора
Используйте директиву #pragma warning (C#) или Disable (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
Вы можете использовать SuppressMessageAttribute, чтобы подавить предупреждение либо в исходном файле, либо в глобальном файле подавлений для проекта (GlobalSuppressions.cs или GlobalSuppressions.vb). Этот атрибут позволяет подавлять предупреждения только в определенных частях проекта или файла.
Два обязательных позиционных параметра для атрибута SuppressMessageAttribute — это категория правила и идентификатор правила. В следующем фрагменте кода передаются значения "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"
. API, в котором следует подавлять предупреждение, указывается с помощью свойства Target.
[assembly: SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.", Scope = "member", Target = "~M:MyApp.Program.IgnorableCharacters")]
Используйте ИД документации для API-интерфейса, на который ссылаетесь в атрибуте Target
. См. сведения о формате ИД документации.
Чтобы подавить предупреждения для кода, созданного компилятором, который не соответствует предоставленному явным образом исходному файлу пользователя, необходимо добавить атрибут подавления в глобальный файл подавлений. Например, следующий код подавляет нарушение в конструкторе, созданном компилятором:
[module: SuppressMessage("Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="MyTools.Type..ctor()")]