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
Para deshabilitar una regla que genera una advertencia, establezca su gravedad en none
en el archivo de configuración EditorConfig o AnalyzerConfig. Esta acción deshabilita la regla en todo el archivo o proyecto, según cuál sea el ámbito del archivo de configuración que se 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()")]