Compartilhar via


Como suprimir avisos de análise de código

Este artigo aborda as várias maneiras pelas quais você pode suprimir avisos da análise de código ao criar seu aplicativo .NET. Você pode suprimir regras de qualidade de código, regras de estilo de código e regras de analisador de terceiros usando as informações fornecidas aqui.

Dica

Se você estiver usando o Visual Studio como seu ambiente de desenvolvimento, o menu de lâmpadas fornecerá opções que geram o código para suprimir avisos para você. Para obter mais informações, consulte Suprimir violações.

Desabilitar a regra

Você pode desabilitar uma regra que está causando um aviso definindo sua severidade none em um EditorConfig ou AnalyzerConfig arquivo de configuração. Essa ação desabilita a regra para todo o seu arquivo ou projeto, dependendo do escopo do arquivo de configuração que você usa.

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

Para obter mais informações sobre severidades de regra, consulte Configurar a gravidade da regra.

Use uma diretiva de pré-processador

Use uma diretiva de aviso #pragma (C#) ou Desabilitar (Visual Basic) para suprimir o aviso apenas para uma linha de código específica.

    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

Usar o SuppressMessageAttribute

Você pode usar um SuppressMessageAttribute para suprimir um aviso no arquivo de origem ou em um arquivo de supressões globais para o projeto (GlobalSuppressions.cs ou GlobalSuppressions.vb). Esse atributo fornece uma maneira de suprimir um aviso em apenas determinadas partes do seu projeto ou arquivo.

Os dois parâmetros posicionais necessários para o SuppressMessageAttribute atributo são a categoria da regra e a ID da regra. O snippet de código a seguir passa "Usage" e "CA2200:Rethrow to preserve stack details" para esses parâmetros.

[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;
    }
}

Se você adicionar o atributo ao arquivo de supressões globais, você definirá o escopo da supressão para o nível desejado, por exemplo "member". Especifique a API em que o aviso deve ser suprimido usando a Target propriedade.

[assembly: SuppressMessage("Usage", "CA2200:Rethrow to preserve stack details", Justification = "Not production code.", Scope = "member", Target = "~M:MyApp.Program.IgnorableCharacters")]

Use a ID da documentação para a API que você deseja referenciar no atributo Target. Para obter informações sobre o formato de ID da documentação, consulte .

Para suprimir avisos de código gerado pelo compilador que não corresponde a uma fonte de usuário explicitamente fornecida, você deve inserir o atributo de supressão em um arquivo de supressões globais. Por exemplo, o código a seguir suprime uma violação contra um construtor emitido pelo compilador:

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

Consulte também