Como suprimir os avisos da 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.

Dica

Se você estiver usando o Visual Studio como seu ambiente de desenvolvimento, o menu de lâmpada 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 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 usado.

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

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

Usar uma diretiva de pré-processador

Use uma diretiva de aviso #pragma (C#) ou Desabilitar (Visual Basic) para suprimir o aviso para apenas 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 global de supressões 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 atributo SuppressMessageAttribute 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 global de supressões, 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 propriedade Target.

[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 IDs de documentação, consulte o formato de ID da Documentação.

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

Confira também