CA1310: Doğruluk için StringComparison belirtin
Özellik | Değer |
---|---|
Kural Kimliği | CA1310 |
Başlık | Doğruluk için StringComparison belirtin |
Kategori | Globalleştirme |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Dize karşılaştırma işlemi, parametre ayarlamayan ve varsayılan olarak kültüre özgü dize karşılaştırması kullanan bir StringComparison yöntem aşırı yüklemesi kullanır. Bu nedenle, davranışı geçerli kullanıcının yerel ayar ayarlarına göre değişir.
Kural açıklaması
Varsayılan olarak kültüre özgü dize karşılaştırması kullanan bir dize karşılaştırma yöntemi, kullanıcı amacıyla eşleşmeyen yanlışlıkla çalışma zamanı davranışına sahip olabilir. Amacın doğruluğu ve netliği için parametresiyle StringComparison aşırı yüklemeyi kullanmanız önerilir.
Bu kural, varsayılan olarak kültüre özgü StringComparison değeri kullanan dize karşılaştırma yöntemlerine bayrak ekler. Daha fazla bilgi için bkz . Geçerli kültürü kullanan dize karşılaştırmaları.
Not
Yöntemi tarafından kullanılan varsayılan dize karşılaştırmasına bakılmaksızın tüm dize karşılaştırma yöntemlerinin ihlallerini görmek istiyorsanız, netlik için CA1307: StringComparison belirtin kullanın.
İhlalleri düzeltme
Bu kuralın ihlalini düzeltmek için, dize karşılaştırma yöntemlerini numaralandırmayı parametre olarak kabul StringComparison eden aşırı yüklemelerle değiştirin. Örneğin, olarak String.Compare(str1, str2, StringComparison.Ordinal)
değiştirinString.Compare(str1, str2)
.
Uyarıların ne zaman bastırılması gerekiyor?
Kitaplık veya uygulamanın yerelleştirilmesi amaçlanmadığında bu kuraldan gelen bir uyarıyı engellemek güvenlidir.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1310.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.