CA1711 : Les identificateurs ne doivent pas porter un suffixe incorrect
Propriété | Value |
---|---|
Identificateur de la règle | CA1711 |
Titre | Les identificateurs ne doivent pas porter un suffixe incorrect |
Catégorie | Dénomination |
Le correctif est cassant ou non cassant | Rupture |
Activé par défaut dans .NET 8 | Non |
Cause
Un identificateur a un suffixe incorrect.
Par défaut, cette règle examine uniquement les identificateurs visibles en externe, mais elle est configurable.
Description de la règle
Par convention, seuls les noms des types qui étendent certains types de base ou qui implémentent certaines interfaces, ou les types dérivés de ces types, doivent se terminer par des suffixes réservés spécifiques. Les autres noms de types ne doivent pas utiliser ces suffixes réservés.
Le tableau suivant répertorie les suffixes réservés ainsi que les types de base et les interfaces auxquels ils sont associés.
Suffixe | Type/interface de base |
---|---|
Attribut | System.Attribute |
Collection | System.Collections.ICollection System.Collections.IEnumerable System.Collections.Queue System.Collections.Stack System.Collections.Generic.ICollection<T> System.Data.DataSet System.Data.DataTable |
Dictionnaire | System.Collections.IDictionary System.Collections.Generic.IDictionary<TKey,TValue> |
EventArgs | System.EventArgs |
EventHandler | Délégué du gestionnaire d’événements |
Exception | System.Exception |
Autorisation | System.Security.IPermission |
File d'attente | System.Collections.Queue |
Pile | System.Collections.Stack |
Stream | System.IO.Stream |
En outre, les suffixes suivants ne doivent pas être utilisés :
Delegate
Enum
Impl
(utilisez plutôtCore
)Ex
ou suffixe similaire pour le distinguer d’une version antérieure du même typeFlag
ouFlags
pour les types d’énumération
Les conventions de nommage fournissent une recherche commune pour les bibliothèques qui ciblent le common language runtime. Cette cohérence réduit la courbe d’apprentissage requise pour les nouvelles bibliothèques de logiciels et augmente la confiance des clients en ce qui concerne le développement de la bibliothèque par une personne qui a une expertise dans le développement de code managé. Pour plus d’informations, consultez Directives d’affectation de noms : classes, structs et interfaces.
Comment corriger les violations
Supprimez le suffixe du nom de type.
Quand supprimer les avertissements
Ne supprimez pas un avertissement de cette règle, sauf si le suffixe a une signification non ambiguë dans le domaine d’application.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA1711
// The code that's violating the rule is on this line.
#pragma warning restore CA1711
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA1711.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
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 ces options pour cette règle uniquement, pour toutes les règles auxquelles elles s’appliquent ou pour toutes les règles de cette catégorie (Nommage) auxquelles elles s’appliquent. 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
Autoriser les suffixes
Vous pouvez configurer une liste de suffixes autorisés, chaque suffixe étant séparé par le caractère de canal (« | »). Par exemple, pour spécifier que la règle ne doit pas s’exécuter sur les suffixes Flag et Flags, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :
dotnet_code_quality.ca1711.allowed_suffixes = Flag|Flags