Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | CA1874 |
| Title | Verwende Regex.IsMatch |
| Kategorie | Leistung |
| Korrektur ist blockierend oder nicht-blockierend | Non-breaking |
| Standardmäßig in .NET 10 aktiviert | Als Vorschlag |
Ursache
Die Success Eigenschaft des Ergebnisses Regex.Match wird verwendet, um zu überprüfen, ob ein Muster übereinstimmt.
Regelbeschreibung
Regex.IsMatch ist einfacher und schneller als Regex.Match(...).Success. Die IsMatch Methode ist für den Fall optimiert, in dem Sie nur wissen müssen, ob eine Übereinstimmung vorhanden ist und nicht, was die Übereinstimmung ist. Das Aufrufen Match() und anschließende Überprüfen Success funktioniert nicht mehr, was sich auf die Leistung auswirken kann.
Wie man Verstöße behebt
Ersetzen Sie Anrufe durch Regex.Match(...).SuccessRegex.IsMatch(...).
Eine Codekorrektur , die diese Transformation automatisch ausführt, ist verfügbar.
Example
Der folgende Codeausschnitt zeigt einen Verstoß gegen 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
Der folgende Codeausschnitt behebt die Verletzung:
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
Wann sollten Warnungen unterdrückt werden?
Es ist sicher, eine Warnung aus dieser Regel zu unterdrücken, wenn die Leistung kein Problem darstellt.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874
Deaktivieren Sie die Regel für eine Datei, einen Ordner oder ein Projekt, indem Sie den Schweregrad in der none auf setzen.
[*.{cs,vb}]
dotnet_diagnostic.CA1874.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.