Partager via


CA1875 : Utiliser « Regex.Count »

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.

Voir aussi