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