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.

Voir aussi