CA1307: Ange StringComparison för tydlighetens skull
Property | Värde |
---|---|
Regel-ID | CA1307 |
Title | Ange StringComparison för tydlighetens skull |
Kategori | Globalisering |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En strängjämförelseåtgärd använder en metodöverbelastning som inte anger någon StringComparison parameter.
Regelbeskrivning
Många strängjäxningsåtgärder ger en överlagring som accepterar ett StringComparison uppräkningsvärde som en parameter.
När det finns en överlagring som tar en StringComparison parameter bör den användas i stället för en överlagring som inte tar den här parametern. Genom att uttryckligen ange den här parametern blir koden ofta tydligare och enklare att underhålla. Mer information finns i Ange strängjämförelser explicit.
Kommentar
Den här regeln tar inte hänsyn till det standardvärde StringComparison som används av jämförelsemetoden. Därför kan det vara potentiellt bullrigt för metoder som använder Ordinal
strängjämförelsen som standard och användaren som är avsedd att använda det här standardjämförelseläget.
Om du bara vill se överträdelser för kända strängmetoder som använder kulturspecifik strängjämförelse som standard använder du CA1310: Ange StringComparison för korrekthet i stället.
Så här åtgärdar du överträdelser
Om du vill åtgärda ett brott mot den här regeln ändrar du metoder för strängjämförelse till överlagringar som accepterar StringComparison uppräkningen som en parameter. Ändra str1.IndexOf(ch1)
till exempel till str1.IndexOf(ch1, StringComparison.Ordinal)
.
När du ska ignorera varningar
Det är säkert att utelämna en varning från den här regeln när avsiktens klarhet inte krävs. Testkoden eller icke-localizable-koden kanske till exempel inte kräver den.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1307
// The code that's violating the rule is on this line.
#pragma warning restore CA1307
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1307.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.