Aracılığıyla paylaş


CA1874: 'Regex.IsMatch' kullanın

Mülkiyet Değer
Kural Kimliği CA1874
Başlık Regex.IsMatch 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

sonucunun Success özelliği, bir desenin Regex.Match eşleşip eşleşmediğini denetlemek için kullanılır.

Kural açıklaması

Regex.IsMatch , değerinden Regex.Match(...).Successdaha basit ve daha hızlıdır. IsMatch yöntemi, eşleşmenin ne olduğu yerine yalnızca bir eşleşme olup olmadığını bilmeniz gereken durum için iyileştirilmiştir. Çağırma Match() ve ardından denetleme Success , performansı etkileyebilecek gereksiz işler yapar.

İhlalleri düzeltme

için çağrılarını Regex.Match(...).Success ile Regex.IsMatch(...)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ığı CA1874 ihlalini gösterir:

using System.Text.RegularExpressions;

class Example
{
    public bool IsValidEmail(string email)
    {
        // Violation
        return Regex.Match(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$").Success;
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function IsValidEmail(email As String) As Boolean
        ' Violation
        Return Regex.Match(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$").Success
    End Function
End Class

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

using System.Text.RegularExpressions;

class Example
{
    public bool IsValidEmail(string email)
    {
        // Fixed
        return Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$");
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function IsValidEmail(email As String) As Boolean
        ' Fixed
        Return Regex.IsMatch(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$")
    End Function
End Class

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

Performans önemli değilse, 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 CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874

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

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

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

Ayrıca bakınız