Partage via


CA1720 : Les identificateurs ne doivent pas contenir de noms de types

Propriété Value
Identificateur de la règle CA1720
Titre Les identificateurs ne doivent pas contenir de noms de types
Catégorie Dénomination
Le correctif est cassant ou non cassant Rupture
Activé par défaut dans .NET 8 Non

Cause

Le nom d’un paramètre dans un membre contient un nom de type de données.

-ou-

Le nom d’un membre contient un nom de type de données spécifique au langage.

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

Description de la règle

Les noms des paramètres et des membres sont mieux utilisés pour communiquer leur signification que pour décrire leur type, qui est censé être fourni par les outils de développement. Pour les noms des membres, si un nom de type de données doit être utilisé, utilisez un nom indépendant du langage au lieu d’un nom propre au langage. Par exemple, au lieu du nom de type C# int, utilisez le nom de type de données indépendant du langage Int32.

Chaque jeton discret dans le nom du paramètre ou du membre est vérifié par rapport aux noms de types de données spécifiques au langage suivants, sans considérer la casse :

  • Bool
  • WChar
  • Int8
  • UInt8
  • Court
  • UShort
  • Int
  • UInt
  • Integer
  • UInteger
  • Long
  • ULong
  • Non signé
  • Signé
  • Float
  • Float32
  • Float64

En outre, les noms d’un paramètre sont également vérifiés par rapport aux noms de types de données indépendants du langage suivants, sans considérer la casse :

  • Object
  • Booléen
  • Char
  • String
  • SByte
  • Byte
  • UByte
  • Int16
  • UInt16
  • Int32
  • UInt32
  • Int64
  • UInt64
  • IntPtr
  • Ptr
  • Pointeur
  • UInptr
  • UPtr
  • UPointer
  • Unique
  • Double
  • Decimal
  • Guid

Comment corriger les violations

En cas de déclenchement sur un paramètre :

Remplacez l’identificateur de type de données dans le nom du paramètre par un terme qui décrit mieux sa signification ou un terme plus générique, comme « valeur ».

En cas de déclenchement sur un membre :

Remplacez l’identificateur de type de données propre au langage dans le nom du membre par un terme qui décrit mieux sa signification, un équivalent indépendant du langage ou un terme plus générique, comme « valeur ».

Quand supprimer les avertissements

L’utilisation occasionnelle de noms de paramètres et de membres basés sur le type peut être appropriée. Toutefois, pour le nouveau développement, aucun scénario connu ne se produit lorsque vous devez supprimer un avertissement de cette règle. Pour les bibliothèques précédemment livrées, vous devrez peut-être supprimer un avertissement de cette règle.

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 CA1720
// The code that's violating the rule is on this line.
#pragma warning restore CA1720

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.CA1720.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 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 (Nommage) 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