Udostępnij za pomocą


CA1875: Użyj polecenia "Regex.Count"

Majątek Wartość
Identyfikator reguły CA1875
Tytuł Użyj Regex.Count
Kategoria Wydajność
Poprawka jest przełomowa lub nieprzełomowa Non-breaking
Domyślnie włączone na platformie .NET 10 Jako sugestia

Przyczyna

Właściwość CountMatchCollection from Regex.Matches służy do pobierania liczby dopasowań.

Opis reguły

Regex.Count jest prostsza i szybsza niż Regex.Matches(...).Count. Metoda Count() jest zoptymalizowana pod kątem zliczania dopasowań bez materializowania pełnej .MatchCollection Wywoływanie, a następnie uzyskiwanie Matches().Count dostępu nie powoduje niepotrzebnej pracy, która może mieć wpływ na wydajność.

Jak naprawić naruszenia

Zastąp Regex.Count(...)wywołania na .Regex.Matches(...).Count

Dostępna jest poprawka kodu , która automatycznie wykonuje tę transformację.

Example

Poniższy fragment kodu przedstawia naruszenie 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

Poniższy fragment kodu naprawia naruszenie:

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

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły, jeśli wydajność nie jest problemem lub jeśli jest przeznaczona wersja platformy .NET, która nie zawiera Regex.Count (przed platformą .NET 7).

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz także