Поделиться через


Подавление предупреждений анализа кода

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

Подсказка

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

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

Вы можете отключить правило, вызывающее предупреждение, задав его серьезность none в файле конфигурации EditorConfig или AnalyzerConfig. Это действие отключает правило для всего файла или проекта в зависимости от области используемого файла конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.<rule-ID>.severity = none

Дополнительные сведения о серьезности правил см. в разделе "Настройка серьезности правил".

Использование директивы препроцессора

Используйте директиву #pragma (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()")]

См. также