Partager via


CA1874 : Utiliser « Regex.IsMatch »

Propriété Valeur
Identificateur de la règle CA1874
Titre Utilisez Regex.IsMatch.
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 Success propriété du résultat est Regex.Match utilisée pour vérifier si un modèle correspond.

Description de la règle

Regex.IsMatch est plus simple et plus rapide que Regex.Match(...).Success. La IsMatch méthode est optimisée pour le cas où vous devez uniquement savoir si une correspondance existe, plutôt que ce qu’est la correspondance. L’appel Match() , puis la vérification Success effectue un travail inutile qui peut avoir un impact sur les performances.

Comment corriger les violations

Remplacez les appels par Regex.Match(...).SuccessRegex.IsMatch(...).

Un correctif de code qui effectue automatiquement cette transformation est disponible.

Example

L’extrait de code suivant montre une violation de l’autorité de certification 1874 :

using System.Text.RegularExpressions;

class Example
{
    public bool IsValidEmail(string email)
    {
        // Violation
        return Regex.Match(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$").Success;
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function IsValidEmail(email As String) As Boolean
        ' Violation
        Return Regex.Match(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$").Success
    End Function
End Class

L’extrait de code suivant corrige la violation :

using System.Text.RegularExpressions;

class Example
{
    public bool IsValidEmail(string email)
    {
        // Fixed
        return Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$");
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function IsValidEmail(email As String) As Boolean
        ' Fixed
        Return Regex.IsMatch(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$")
    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.

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 CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874

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.CA1874.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.

Voir aussi