Condividi tramite


CA1874: usare 'Regex.IsMatch'

Proprietà Value
ID della regola CA1874
Titolo Utilizzare Regex.IsMatch
Categoria Prestazioni
La correzione causa un'interruzione o meno Non-breaking
Abilitato per impostazione predefinita in .NET 10 Come suggerimento

Motivo

La Success proprietà del risultato da Regex.Match viene utilizzata per verificare se un criterio corrisponde.

Descrizione regola

Regex.IsMatch è più semplice e veloce di Regex.Match(...).Success. Il IsMatch metodo è ottimizzato per il caso in cui è sufficiente sapere se esiste una corrispondenza, anziché qual è la corrispondenza. La chiamata Match() e il controllo Success non comportano operazioni necessarie che possono influire sulle prestazioni.

Come correggere le violazioni

Sostituire le chiamate a Regex.Match(...).Success con Regex.IsMatch(...).

È disponibile una correzione del codice che esegue automaticamente questa trasformazione.

Example

Il frammento di codice seguente mostra una violazione di CA1874:

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

Il frammento di codice seguente corregge la violazione:

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

Quando eliminare gli avvisi

Se le prestazioni non sono un problema, è possibile eliminare un avviso da questa regola.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .

[*.{cs,vb}]
dotnet_diagnostic.CA1874.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedere anche