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.

Voir aussi