Delen via


CA1875: 'Regex.Count' gebruiken

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

Oorzaak

De Count eigenschap van waaruit MatchCollectionRegex.Matches wordt gebruikt om het aantal overeenkomsten op te halen.

Beschrijving van regel

Regex.Count is eenvoudiger en sneller dan Regex.Matches(...).Count. De Count() methode is geoptimaliseerd voor het tellen van overeenkomsten zonder het volledige MatchCollectionte materialiseren. Bellen Matches() en vervolgens openen .Count doet onnodig werk dat van invloed kan zijn op de prestaties.

Hoe schendingen op te lossen

Vervang aanroepen door Regex.Matches(...).CountRegex.Count(...).

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

Example

Het volgende codefragment toont een schending van CA1875:

using System.Text.RegularExpressions;

class Example
{
    public int CountWords(string text)
    {
        // Violation
        return Regex.Matches(text, @"\b\w+\b").Count;
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function CountWords(text As String) As Integer
        ' Violation
        Return Regex.Matches(text, "\b\w+\b").Count
    End Function
End Class

Met het volgende codefragment wordt de schending opgelost:

using System.Text.RegularExpressions;

class Example
{
    public int CountWords(string text)
    {
        // Fixed
        return Regex.Count(text, @"\b\w+\b");
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function CountWords(text As String) As Integer
        ' Fixed
        Return Regex.Count(text, "\b\w+\b")
    End Function
End Class

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken als de prestaties geen probleem zijn of als u zich richt op een versie van .NET die niet is opgenomen Regex.Count (vóór .NET 7).

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 CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875

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.CA1875.severity = none

Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

Zie ook