CA1865-CA1867 : utilisez 'string.Method(char)' au lieu de 'string.Method(string)' pour une chaîne avec un seul caractère
Propriété | Value |
---|---|
Identificateur de la règle | CA1865-CA1867 |
Titre | Utilisez 'string.Method(char)' au lieu de 'string.Method(string)' pour une chaîne avec un seul caractère |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | CA1865 : À titre de suggestion CA1866 : À titre de suggestion CA1867 : Non |
Cause
string.Method(string)
est utilisé alors que string.Method(char)
était disponible.
Les méthodes cibles activées string
pour ces règles :
StartsWith
EndsWith
IndexOf
LastIndexOf
Le tableau suivant résume les conditions pour chacun des ID de règle associés.
ID de diagnostic | Description | Correction de code disponible |
---|---|---|
CA1865 | S'applique lorsqu'une transformation sécurisée peut être effectuée automatiquement avec un correctif de code. | Oui |
CA1866 | S'applique lorsqu'il n'y a pas de comparaison spécifiée. | Non |
CA1867 | S'applique à toute autre comparaison de chaînes non couverte par les deux autres règles. | Non |
CA1867 est désactivé par défaut.
Description de la règle
La surcharge qui prend un paramètre char fonctionne mieux que la surcharge qui prend un paramètre chaîne.
Comment corriger les violations
Pour corriger une violation, utilisez la surcharge du paramètre char au lieu de la surcharge du paramètre chaîne.
Prenons l’exemple suivant :
public bool StartsWithLetterI()
{
var testString = "I am a test string.";
return testString.StartsWith("I");
}
Public Function StartsWithLetterI() As Boolean
Dim testString As String = "I am a test string."
Return testString.StartsWith("I")
End Function
Ce code peut être modifié pour passer 'I'
à StartsWith
à la place de la chaîne "I"
.
public bool StartsWithLetterI()
{
var testString = "I am a test string.";
return testString.StartsWith('I');
}
Public Function StartsWithLetterI() As Boolean
Dim testString As String = "I am a test string."
Return testString.StartsWith("I"c)
End Function
Quand supprimer les avertissements
Supprimez une violation de cette règle si vous n'êtes pas préoccupé par l'impact sur les performances de l'appel de la méthode avec une chaîne.
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 CA1865 // or CA1866 or CA1867
// The code that's violating the rule is on this line.
#pragma warning restore CA1865 // or CA1866 or CA1867
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.CA1865.severity = none
dotnet_diagnostic.CA1866.severity = none
dotnet_diagnostic.CA1867.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.