Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnictví | Hodnota |
|---|---|
| Identifikátor pravidla | CA1874 |
| Titul | Použijte Regex.IsMatch |
| Kategorie | výkon |
| Oprava je destruktivní nebo nedestruktivní | Non-breaking |
| Povoleno ve výchozím nastavení v .NET 10 | Jako návrh |
Příčina
Vlastnost Success výsledku z Regex.Match se používá ke kontrole, jestli se vzor shoduje.
Popis pravidla
Regex.IsMatch je jednodušší a rychlejší než Regex.Match(...).Success. Metoda IsMatch je optimalizovaná pro případ, kdy potřebujete vědět, jestli shoda existuje, a ne to, co je shoda. Volání Match() a následná kontrola Success nepotřebné práce, která může mít vliv na výkon.
Jak opravit porušení
Nahraďte volání Regex.Match(...).Success za Regex.IsMatch(...).
Je k dispozici oprava kódu , která tuto transformaci automaticky provede.
Example
Následující fragment kódu ukazuje porušení ca1874:
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
Následující fragment kódu opraví porušení zásad:
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
Kdy potlačit upozornění
Pokud výkon není problém, je bezpečné potlačit upozornění z tohoto pravidla.
Potlačte upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874
Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .
[*.{cs,vb}]
dotnet_diagnostic.CA1874.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.