Como suprimir avisos de análise de código

Este artigo aborda as várias maneiras de 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.

Gorjeta

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

Desativar a regra

Você pode desabilitar uma regra que está causando um aviso definindo sua gravidade como none em um arquivo de configuração EditorConfig ou AnalyzerConfig. Essa ação desabilita a regra para todo o 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 a gravidade da regra, consulte Configurar a gravidade da regra.

Usar uma diretiva de pré-processador

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

    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

Use o SuppressMessageAttribute

Você pode usar a SuppressMessageAttribute para suprimir um aviso no arquivo de origem ou em um arquivo de supressão global 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 o ID da regra. O trecho 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, definirá o escopo da supressão para o nível desejado, por exemplo "member". Você especifica a API onde 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 o ID da documentação para a API que você deseja referenciar no Target atributo. Para obter informações sobre IDs de documentação, consulte Formato de ID de documentação.

Para suprimir avisos para código gerado pelo compilador que não é mapeado para a fonte do usuário fornecida explicitamente, você deve colocar o atributo suppression em um arquivo de supressão global. 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