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

В этой статье рассматриваются различные способы подавления предупреждений для анализа кода при сборке приложения .NET.

Совет

Если вы используете Visual Studio в качестве среды разработки, в меню лампочки есть пункты, при выборе которых будет создан код для подавления предупреждений. Дополнительные сведения см. в разделе Подавление нарушений.

Отключение правила

При отключении правила анализа кода, которое вызывает предупреждение, вы отключаете правило для всего файла или проекта (в зависимости от области используемого файла конфигурации). Чтобы отключить правило, установите для него уровень серьезности none в файле конфигурации.

[*.{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 IngorableCharacters()
{
    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.IngorableCharacters")]

Используйте ИД документации для API-интерфейса, на который ссылаетесь в атрибуте Target. См. сведения о формате ИД документации.

Чтобы подавить предупреждения для кода, созданного компилятором, который не соответствует предоставленному явным образом исходному файлу пользователя, необходимо добавить атрибут подавления в глобальный файл подавлений. Например, следующий код подавляет нарушение в конструкторе, созданном компилятором:

[module: SuppressMessage("Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="MyTools.Type..ctor()")]

См. также раздел