Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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.