Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| 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.