Delen via


CA1874: 'Regex.IsMatch' gebruiken

Vastgoed Waarde
Regel-ID CA1874
Titel Gebruik Regex.IsMatch
Categorie prestatie
De oplossing veroorzaakt brekende of niet-brekende problemen Non-breaking
Standaard ingeschakeld in .NET 10 Als suggestie

Oorzaak

De Success eigenschap van het resultaat wordt Regex.Match gebruikt om te controleren of een patroon overeenkomt.

Beschrijving van regel

Regex.IsMatch is eenvoudiger en sneller dan Regex.Match(...).Success. De IsMatch methode is geoptimaliseerd voor het geval dat u alleen hoeft te weten of er een overeenkomst bestaat, in plaats van wat de overeenkomst is. Bellen Match() en vervolgens controleren Success doet onnodig werk dat van invloed kan zijn op de prestaties.

Hoe schendingen op te lossen

Vervang aanroepen door Regex.Match(...).SuccessRegex.IsMatch(...).

Er is een codeoplossing beschikbaar waarmee deze transformatie automatisch wordt uitgevoerd.

Example

Het volgende codefragment toont een schending van 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

Met het volgende codefragment wordt de schending opgelost:

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

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken als de prestaties geen probleem zijn.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

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

Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

Zie ook