Aracılığıyla paylaş


CA1875: 'Regex.Count' kullanın

Mülkiyet Değer
Kural Kimliği CA1875
Başlık Regex.Count komutunu kullanma
Kategori Performans
Düzeltme kırılgan mı yoksa sağlam mı Non-breaking
.NET 10'da varsayılan olarak etkin Öneri olarak

Nedeni

Count özelliği MatchCollectionRegex.Matches, eşleşme sayısını almak için kullanılır.

Kural açıklaması

Regex.Count , değerinden Regex.Matches(...).Countdaha basit ve daha hızlıdır. Count() yöntemi, tam MatchCollectiondeğeri gerçekleşmeden eşleşmeleri saymak için iyileştirilmiştir. Çağırma Matches() ve ardından erişim .Count , performansı etkileyebilecek gereksiz işler yapar.

İhlalleri düzeltme

için çağrılarını Regex.Matches(...).Count ile Regex.Count(...)değiştirin.

Bu dönüşümü otomatik olarak gerçekleştiren bir kod düzeltmesi kullanılabilir.

Example

Aşağıdaki kod parçacığı CA1875 ihlalini gösterir:

using System.Text.RegularExpressions;

class Example
{
    public int CountWords(string text)
    {
        // Violation
        return Regex.Matches(text, @"\b\w+\b").Count;
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function CountWords(text As String) As Integer
        ' Violation
        Return Regex.Matches(text, "\b\w+\b").Count
    End Function
End Class

Aşağıdaki kod parçacığı ihlali düzeltir:

using System.Text.RegularExpressions;

class Example
{
    public int CountWords(string text)
    {
        // Fixed
        return Regex.Count(text, @"\b\w+\b");
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function CountWords(text As String) As Integer
        ' Fixed
        Return Regex.Count(text, "\b\w+\b")
    End Function
End Class

Uyarıların ne zaman bastırılması gerekiyor?

Performans önemli değilse veya içermeyen bir .NET sürümünü (.NET Regex.Count 7'den önce) hedeflediyseniz, bu kuraldan gelen bir uyarıyı gizlemeniz 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 CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, none önem derecesini olarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.CA1875.severity = none

Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.

Ayrıca bakınız