Dela via


CA1874: Använd "Regex.IsMatch"

Fastighet Värde
Regel-ID CA1874
Titel Använd Regex.IsMatch
Kategori Föreställning
Korrigeringen är antingen brytande eller icke-brytande Non-breaking
Aktiverad som standard i .NET 10 Som förslag

Orsak

Egenskapen Success för resultatet från Regex.Match används för att kontrollera om ett mönster matchar.

Regelbeskrivning

Regex.IsMatch är enklare och snabbare än Regex.Match(...).Success. Metoden IsMatch är optimerad för det fall där du bara behöver veta om en matchning finns i stället för vad matchningen är. Att anropa Match() och sedan kontrollera Success gör onödigt arbete som kan påverka prestanda.

Så här åtgärdar du överträdelser

Ersätt anrop till Regex.Match(...).Success med Regex.IsMatch(...).

Det finns en kodkorrigering som utför den här omvandlingen automatiskt.

Example

Följande kodfragment visar ett brott mot 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

Följande kodfragment åtgärdar överträdelsen:

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

När du ska ignorera varningar

Det är säkert att ignorera en varning från den här regeln om prestanda inte är ett problem.

Undertryck en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även