CA1041 : Fournir un message ObsoleteAttribute

Propriété Value
Identificateur de la règle CA1041
Titre Fournir un message ObsoleteAttribute
Catégorie Conception
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 À titre de suggestion

Cause

Un type ou un membre est marqué à l’aide d’un attribut System.ObsoleteAttribute dont la propriété System.ObsoleteAttribute.Message n’est pas spécifiée.

Par défaut, cette règle examine uniquement les membres et types visibles en externe, mais elle est configurable.

Description de la règle

ObsoleteAttribute sert à marquer les types et les membres de bibliothèque dépréciés. Les consommateurs de bibliothèque doivent éviter l’utilisation de tout type ou membre marqué comme obsolète. En effet, il risque de ne pas être pris en charge, et sera finalement supprimé des versions ultérieures de la bibliothèque. Lorsqu’un type ou un membre marqué avec ObsoleteAttribute est compilé, la propriété Message de l’attribut s’affiche. Cela fournit à l'utilisateur des informations sur le type ou le membre obsolète. Ces informations incluent généralement la durée pendant laquelle le type ou le membre obsolète sera pris en charge par les concepteurs de bibliothèque et le remplacement préféré à utiliser.

Comment corriger les violations

Pour corriger une violation de cette règle, ajoutez le paramètre message au constructeur ObsoleteAttribute.

Quand supprimer les avertissements

Ne supprimez pas d’avertissement de cette règle, car la propriété Message fournit des informations critiques sur le type ou le membre obsolète.

Configurer le code à analyser

Utilisez l’option suivante pour configurer les parties de votre codebase sur lesquelles exécuter cette règle.

Vous pouvez configurer cette option pour cette règle uniquement, pour toutes les règles auxquelles elle s’applique ou pour toutes les règles de cette catégorie (Conception) auxquelles elle s’applique. Pour plus d’informations, consultez Options de configuration des règles de qualité du code.

Inclure des surfaces d’API spécifiques

Vous pouvez configurer les parties de votre codebase sur lesquelles exécuter cette règle, en fonction de leur accessibilité. Par exemple, pour spécifier que la règle doit s’exécuter uniquement sur la surface d’API non publique, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :

dotnet_code_quality.CAXXXX.api_surface = private, internal

Exemple

L’exemple suivant montre un membre obsolète qui a un ObsoleteAttribute correctement déclaré.

[ObsoleteAttribute("This property is obsolete and will be removed in a " +
"future version. Use the FullName property instead.", false)]
public string Name
{
    get => "Name";
}
Imports System

Namespace ca1041

    Public Class ObsoleteAttributeOnMember

        <ObsoleteAttribute("This property is obsolete and will " &
             "be removed in a future version. Use the FirstName " &
             "and LastName properties instead.", False)>
        ReadOnly Property Name As String
            Get
                Return "Name"
            End Get
        End Property

        ReadOnly Property FirstName As String
            Get
                Return "FirstName"
            End Get
        End Property

        ReadOnly Property LastName As String
            Get
                Return "LastName"
            End Get
        End Property

    End Class

End Namespace

Voir aussi