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ôt Core)
  • Ex ou suffixe similaire pour le distinguer d’une version antérieure du même type
  • Flag ou Flags 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

Voir aussi