CA1307: Netlik için StringComparison belirtin
Özellik | Değer |
---|---|
Kural Kimliği | CA1307 |
Başlık | Daha anlaşılır olması için StringComparison belirtin |
Kategori | Globalleştirme |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 8'de varsayılan olarak etkin | Hayır |
Neden
Dize karşılaştırma işlemi parametre ayarlamayan StringComparison bir yöntem aşırı yüklemesi kullanır.
Kural açıklaması
Birçok dize karşılaştırma işlemi, bir numaralandırma değerini parametre olarak kabul StringComparison eden bir aşırı yükleme sağlar.
Parametre alan StringComparison bir aşırı yükleme olduğunda, bu parametreyi almayan bir aşırı yükleme yerine kullanılmalıdır. Bu parametre açıkça ayarlandığında, kodunuz genellikle daha net ve bakımı kolay hale getirilir. Daha fazla bilgi için bkz . Dize karşılaştırmalarını açıkça belirtme.
Dekont
Bu kural, karşılaştırma yöntemi tarafından kullanılan varsayılan StringComparison değeri dikkate almaz. Bu nedenle, varsayılan olarak dize karşılaştırmasını Ordinal
kullanan yöntemler ve bu varsayılan karşılaştırma modunu kullanmayı amaçlayan kullanıcı için gürültülü olabilir.
Yalnızca varsayılan olarak kültüre özgü dize karşılaştırması kullanan bilinen dize yöntemlerinin ihlallerini görmek istiyorsanız, bunun yerine CA1310 : StringComparison'ı belirtin.
İ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 str1.IndexOf(ch1, StringComparison.Ordinal)
değiştirinstr1.IndexOf(ch1)
.
Uyarıların ne zaman bastırılması gerekiyor?
Amacın netliği gerekli olmadığında bu kuraldan gelen bir uyarıyı bastırmak güvenlidir. Örneğin, test kodu veya yerelleştirilebilir olmayan kod gerekli olmayabilir.
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 CA1307
// The code that's violating the rule is on this line.
#pragma warning restore CA1307
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.CA1307.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin