Procedimiento para suprimir advertencias de análisis de código

En este artículo se tratan las distintas formas de suprimir advertencias de análisis del código al compilar una aplicación de .NET. Puedes suprimir reglas de calidad de código, reglas de estilo de código y reglas de analizador de terceros mediante la información proporcionada aquí.

Sugerencia

Si utiliza Visual Studio como entorno de desarrollo, el menú de bombilla proporciona opciones que generan el código para suprimir las advertencias. Para obtener más información, consulte Supresión de infracciones.

Deshabilitación de la regla

Puede deshabilitar una regla que esté causando una advertencia estableciendo su gravedad none en en un archivo de configuración EditorConfig o AnalyzerConfig. Esta acción deshabilita la regla para todo el archivo o proyecto, en función del ámbito del archivo de configuración que use.

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

Para obtener más información sobre los niveles de gravedad de las reglas, consulte Nivel de gravedad.

Uso de una directiva de preprocesador

Use una directiva Advertencia #pragma (C#) o Deshabilitar (Visual Basic) para suprimir la advertencia solo para una línea 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

Uso de SuppressMessageAttribute

Puede usar SuppressMessageAttribute para suprimir una advertencia en el archivo de código fuente o en un archivo de supresiones globales para el proyecto (GlobalSuppressions.cs o GlobalSuppressions.vb). Este atributo proporciona una manera de suprimir una advertencia solo en determinadas partes del proyecto o archivo.

Los dos parámetros posicionales requeridos para el atributo SuppressMessageAttribute son la categoría de la regla y el identificador de la regla. El siguiente fragmento de código pasa "Usage" y "CA2200:Rethrow to preserve stack details" para estos 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;
    }
}

Si agrega el atributo al archivo de supresiones globales, el ámbito de la supresión quedará limitado al nivel deseado, por ejemplo, "member". Especifique la API en la que se debe suprimir la advertencia mediante la propiedad Target.

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

Use el id. de documentación de la API a la que quiera hacer referencia en el atributo Target. Para obtener información sobre los id. de documentación, vea Formato de id. de documentación.

En el caso del código generado por el compilador que no se asigna explícitamente al código fuente que el usuario ha proporcionado, para suprimir las advertencias debe colocar el atributo de supresión en un archivo de supresiones globales. Por ejemplo, el siguiente código suprime una infracción en un constructor emitido por el compilador:

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

Vea también