CA1507 : Utiliser nameof
à la place de string
Propriété | Value |
---|---|
Identificateur de la règle | CA1507 |
Titre | Utiliser nameof à la place de string |
Catégorie | Maintenabilité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Comme suggestion |
Cause
Un littéral ou une constante string
qui correspond au nom d’un paramètre de la méthode conteneur ou au nom d’une propriété du type conteneur est utilisé comme argument pour une méthode.
Description de la règle
La règle CA1507 signale l’utilisation d’un littéral string
comme argument pour une méthode ou un constructeur, là où une expression nameof (NameOf
en Visual Basic) ajouterait de la maintenabilité. La règle se déclenche si toutes les conditions suivantes sont remplies :
L’argument est un littéral ou une constante
string
.L’argument correspond à un paramètre typé
string
de la méthode ou du constructeur qui est appelé (autrement dit, il n’existe aucune conversion impliquée sur le site d’appel).Un des deux éléments suivants :
Le nom déclaré du paramètre est
paramName
, et la valeur constante du littéralstring
correspond au nom d’un paramètre de la méthode ou de la fonction lambda ou locale dans laquelle la méthode ou le constructeur est appelé.Le nom déclaré du paramètre est
propertyName
, et la valeur constante du littéralstring
correspond au nom d’une propriété du type dans lequel la méthode ou le constructeur est appelé.
La règle CA1507 améliore la maintenabilité du code dans les cas où le paramètre peut être renommé à l’avenir, mais où le littéral string
risque de ne pas être renommé par oubli. Avec nameof
, le symbole est renommé lorsque le paramètre est renommé par le biais d’une opération de refactorisation. En outre, toutes les fautes d’orthographe dans le nom du paramètre sont interceptées par le compilateur.
Comment corriger les violations
Pour corriger une violation, remplacez le littéral string
par une expression nameof (NameOf
en Visual Basic). Par exemple, les deux extraits de code suivants montrent une violation de la règle et comment la corriger :
public Book(string title)
{
// Violates rule CA1507
Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
public Book(string title)
{
// Resolves rule CA1507 violation
Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}
Conseil
Un correctif de code est disponible pour cette règle dans Visual Studio. Pour l’utiliser, positionnez le curseur sur le littéral string
et appuyez sur Ctrl+. (point). Choisissez Utiliser nameof pour exprimer les noms de symboles dans la liste des options qui est présentée.
Quand supprimer les avertissements
Il est sûr de supprimer une violation de cette règle si vous n’êtes pas préoccupé par la maintenance de votre code.
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 CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507
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.CA1507.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.