CA1307: Określ parametr StringComparison, aby uzyskać jasność
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1307 |
Tytuł | Określ parametr StringComparison w celu zapewnienia jednoznaczności |
Kategoria | Globalizacja |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Operacja porównania ciągów używa przeciążenia metody, które nie ustawia parametru StringComparison .
Opis reguły
Wiele operacji porównywania ciągów zapewnia przeciążenie, które akceptuje StringComparison wartość wyliczenia jako parametr.
Za każdym razem, gdy istnieje przeciążenie, które przyjmuje StringComparison parametr, należy go użyć zamiast przeciążenia, które nie przyjmuje tego parametru. Jawne ustawienie tego parametru powoduje, że kod jest często jaśniejszy i łatwiejszy w obsłudze. Aby uzyskać więcej informacji, zobacz Jawne określanie porównań ciągów.
Uwaga
Ta reguła nie uwzględnia wartości domyślnej StringComparison używanej przez metodę porównania. W związku z tym może to być potencjalnie hałaśliwe dla metod, które domyślnie używają Ordinal
porównania ciągów, a użytkownik zamierza użyć tego domyślnego trybu porównania.
Jeśli chcesz tylko zobaczyć naruszenia tylko dla znanych metod ciągów, które domyślnie używają porównania ciągów specyficznych dla kultury, użyj ca1310: Określ wartość StringComparison, aby zamiast tego uzyskać poprawność .
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, zmień metody porównywania ciągów na przeciążenia, które akceptują StringComparison wyliczenie jako parametr. Na przykład zmień wartość str1.IndexOf(ch1)
na str1.IndexOf(ch1, StringComparison.Ordinal)
.
Kiedy pomijać ostrzeżenia
Można bezpiecznie pominąć ostrzeżenie z tej reguły, gdy nie jest wymagana jasność intencji. Na przykład kod testowy lub kod nielokalizowalny może nie wymagać go.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA1307
// The code that's violating the rule is on this line.
#pragma warning restore CA1307
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none
w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA1307.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.