Comment supprimer les avertissements d’analyse du code

Cet article décrit les différentes façons de supprimer les avertissements de l’analyse du code lorsque vous générez votre application .NET. Vous pouvez supprimer les règles de qualité du code, les règles de style de code et les règles d’analyseur tiers à l’aide des informations fournies ici.

Conseil

Si vous utilisez Visual Studio comme environnement de développement, le menu ampoule fournit des options qui génèrent le code pour supprimer les avertissements. Pour plus d’informations, consultez Supprimer des violations.

Désactiver la règle

Vous pouvez désactiver une règle qui provoque un avertissement en définissant sa gravité sur none dans un fichier de configuration EditorConfig ou AnalyzerConfig. Cette action désactive la règle pour l’ensemble de votre fichier ou projet, en fonction de l’étendue du fichier de configuration que vous utilisez.

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

Pour plus d’informations sur les gravités des règles, consultez Configurer la gravité des règles.

Utilisez une directive de préprocesseur

Utilisez une directive d’avertissement #pragma (C#) ou de désactivation (Visual Basic) pour supprimer l’avertissement uniquement pour une ligne de code spécifique.

    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

Utilisez suppressMessageAttribute

Vous pouvez utiliser un SuppressMessageAttribute pour supprimer un avertissement dans le fichier source ou dans un fichier de suppressions globales pour le projet (GlobalSuppressions.cs ou GlobalSuppressions.vb). Cet attribut permet de supprimer un avertissement uniquement dans certaines parties de votre projet ou fichier.

Les deux paramètres positionnels requis pour l’attribut SuppressMessageAttribute sont la catégorie de la règle et l’ID de règle. L’extrait de code suivant passe "Usage" et "CA2200:Rethrow to preserve stack details" pour ces paramètres.

[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 vous ajoutez l’attribut au fichier de suppressions globales, vous étendez la suppression au niveau souhaité, par exemple "member". Vous spécifiez l’API où l’avertissement doit être supprimé à l’aide de la propriété Target.

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

Utilisez l’ID de documentation de l’API que vous souhaitez référencer dans l’attribut Target. Pour plus d’informations sur les ID de documentation, consultez Format de l’ID de documentation.

Pour supprimer les avertissements pour le code généré par le compilateur qui ne correspond pas à la source utilisateur fournie explicitement, vous devez placer l’attribut de suppression dans un fichier de suppression global. Par exemple, le code suivant supprime une violation concernant un constructeur émis par le compilateur :

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

Voir aussi