CA1309 : Utiliser StringComparison avec la valeur Ordinal
Propriété | Value |
---|---|
Identificateur de la règle | CA1309 |
Titre | Utiliser StringComparison avec la valeur Ordinal |
Catégorie | Globalisation |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Non |
Cause
Une opération de comparaison de chaînes non linguistique n'affecte pas la valeur Ordinal ou OrdinalIgnoreCase au paramètre StringComparison.
Description de la règle
De nombreuses opérations de chaîne, notamment les méthodes System.String.Compare et System.String.Equals, fournissent désormais une surcharge qui accepte une valeur d’énumération System.StringComparison en tant que paramètre.
Lorsque vous spécifiez StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, la comparaison de chaînes n’est pas linguistique. Autrement dit, les caractéristiques propres au langage naturel sont ignorées lorsque des décisions de comparaison sont prises. Ignorer les fonctionnalités en langage naturel signifie que les décisions sont basées sur des comparaisons d’octets simples et non sur la casse ou des tables d’équivalence qui sont paramétrisées par culture. En conséquence, en affectant explicitement au paramètre la valeur StringComparison.Ordinal ou StringComparison.OrdinalIgnoreCase, votre code gagne souvent en rapidité, tout en devenant plus correct et plus fiable.
Comment corriger les violations
Pour corriger une violation de cette règle, remplacez la méthode de comparaison de chaînes par une surcharge qui accepte l’énumération System.StringComparison en tant que paramètre, et spécifiez Ordinal ou OrdinalIgnoreCase. Par exemple, remplacez String.Compare(str1, str2)
par String.Compare(str1, str2, StringComparison.Ordinal)
.
Quand supprimer les avertissements
Vous pouvez sans risque supprimer un avertissement de cette règle lorsque la bibliothèque ou l’application est destinée à un public local limité, ou lorsque la sémantique de la culture actuelle doit être utilisée.
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 CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309
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.CA1309.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.