Отключение предупреждений анализа кода

В этой статье рассматриваются различные способы подавления предупреждений для анализа кода при сборке приложения .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()")]

См. также