Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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.