CA1500 : Les noms de variables ne doivent pas être identiques aux noms de champs

Élément Valeur
ID de la règle CA1500
Category Microsoft.Maintainability
Modification avec rupture Lorsqu’il est déclenché sur un paramètre portant le même nom qu’un champ :

- Non cassant : si le champ et la méthode qui déclarent le paramètre ne peuvent pas être visibles en dehors de l’assembly, quelle que soit la modification que vous apportez.
- Cassant : si vous modifiez le nom du champ et qu’il peut être vu en dehors de l’assembly.
- Cassant : si vous modifiez le nom du paramètre et que la méthode qui le déclare est visible en dehors de l’assembly.

En cas de déclenchement sur une variable locale portant le même nom qu’un champ :

- Non cassant : si le champ ne peut pas être vu en dehors de l’assembly, quelle que soit la modification que vous apportez.
- Non cassant : si vous modifiez le nom de la variable locale et que vous ne modifiez pas le nom du champ.
- Cassant : si vous modifiez le nom du champ et qu’il peut être vu en dehors de l’assembly.

Cause

Une méthode d’instance déclare un paramètre ou une variable locale dont le nom correspond à un champ d’instance du type déclarant. Pour intercepter les variables locales qui violent la règle, l’assembly testé doit être généré à l’aide des informations de débogage, et le fichier de base de données de programme associé (.pdb) doit être disponible.

Description de la règle

Lorsque le nom d’un champ d’instance correspond à un paramètre ou à un nom de variable locale, le champ d’instance est accessible à l’aide du mot clé this (Me en Visual Basic) à l’intérieur du corps de la méthode. Lors de la maintenance du code, il est facile d’oublier cette différence et de supposer que le paramètre/la variable locale fait référence au champ d’instance, ce qui entraîne des erreurs. Cela est particulièrement vrai pour les corps de méthode longs.

Comment corriger les violations

Pour corriger une violation de cette règle, renommez le paramètre/la variable ou le champ.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L’exemple suivant montre deux violations de la règle.

using System;

namespace MaintainabilityLibrary
{
   class MatchingNames
   {
      int someField;
   
      void SomeMethodOne(int someField) {}
      
      void SomeMethodTwo()
      {
         int someField;
      }
   }
}