Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnictví | Hodnota |
|---|---|
| Identifikátor pravidla | CA1875 |
| Titul | Použijte Regex.Count |
| Kategorie | výkon |
| Oprava je destruktivní nebo nedestruktivní | Non-breaking |
| Povoleno ve výchozím nastavení v .NET 10 | Jako návrh |
Příčina
Vlastnost CountMatchCollection from Regex.Matches slouží k získání počtu shod.
Popis pravidla
Regex.Count je jednodušší a rychlejší než Regex.Matches(...).Count. Metoda Count() je optimalizovaná pro počítání shod bez materializace plné MatchCollection. Volání Matches() a přístup .Count k němu nemusí mít vliv na výkon.
Jak opravit porušení
Nahraďte volání Regex.Matches(...).Count za Regex.Count(...).
Je k dispozici oprava kódu , která tuto transformaci automaticky provede.
Example
Následující fragment kódu ukazuje porušení 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
Následující fragment kódu opraví porušení zásad:
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
Kdy potlačit upozornění
Upozornění z tohoto pravidla je bezpečné potlačit, pokud se nejedná o problém nebo pokud cílíte na verzi .NET, která nezahrnuje Regex.Count (před .NET 7).
Potlačte upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875
Chcete-li pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost na none v konfiguračním souboru .
[*.{cs,vb}]
dotnet_diagnostic.CA1875.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.