Sdílet prostřednictvím


CA1874: Použijte Regex.IsMatch

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.

Viz také