Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
| Propriété | Valeur |
|---|---|
| Identificateur de la règle | CA1875 |
| Titre | Utilisez Regex.Count. |
| Catégorie | Niveau de performance |
| Le correctif est cassant ou non cassant | Non-breaking |
| Activé par défaut dans .NET 10 | À titre de suggestion |
La cause
La Count propriété de l’objet MatchCollection from Regex.Matches est utilisée pour obtenir le nombre de correspondances.
Description de la règle
Regex.Count est plus simple et plus rapide que Regex.Matches(...).Count. La Count() méthode est optimisée pour le comptage des correspondances sans matérialiser l’intégralité MatchCollection. L’appel Matches() , puis l’accès .Count effectue un travail inutile qui peut avoir un impact sur les performances.
Comment corriger les violations
Remplacez les appels par Regex.Matches(...).CountRegex.Count(...).
Un correctif de code qui effectue automatiquement cette transformation est disponible.
Example
L’extrait de code suivant montre une violation de 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
L’extrait de code suivant corrige la violation :
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
Quand supprimer les avertissements
Il est sûr de supprimer un avertissement de cette règle si les performances ne sont pas un problème ou si vous ciblez une version de .NET qui n’inclut Regex.Count pas (avant .NET 7).
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA1875.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.