Compartir a través de


Cómo suprimir advertencias de análisis de código

En este artículo se describen las distintas formas en que puede suprimir las advertencias del análisis de código al compilar la aplicación .NET. Puede 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 usa Visual Studio como entorno de desarrollo, el menú de bombillas proporciona opciones que generan el código para suprimir las advertencias. Para obtener más información, consulte Suprimir infracciones.

Deshabilitar la regla

Puede deshabilitar una regla que esté causando una advertencia configurando su gravedad a none 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 las gravedades de las reglas, consulte Configuración de la gravedad de la regla.

Uso de una directiva de preprocesador

Use una directiva de advertencia de #pragma (C#) o Disable (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 origen o en un archivo de supresión global 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 necesarios para el SuppressMessageAttribute atributo son la categoría de la regla y el identificador de 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, puede definir el ámbito de la supresión en el nivel deseado, por ejemplo "member". Especifique la API donde se debe suprimir la advertencia mediante la Target propiedad .

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

Use el identificador de documentación de la API a la que desea hacer referencia en el Target atributo . Para obtener información sobre los identificadores de documentación, consulte formato de identificador de documentación.

Para suprimir las advertencias del código que el compilador genera y que no corresponde a la fuente de usuario proporcionada explícitamente, debe colocar el atributo de supresión en un archivo de supresiones globales. Por ejemplo, el código siguiente suprime una infracción en un constructor emitido por el compilador:

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

Consulte también