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 łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Nie.
Zastosowane języki C# i Visual Basic

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 oferuje przeciążenie, które akceptuje wartość wyliczenia StringComparison 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 zobaczyć tylko naruszenia dotyczące znanych metod ciągów znaków, które domyślnie używają porównania ciągów specyficznych dla kultury, użyj zamiast tego CA1310: Określ wartość StringComparison dla poprawności.

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.

Zobacz też