Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Propiedad | Importancia |
|---|---|
| Identificador de la regla | CA1874 |
| Título | Utilice Regex.IsMatch |
| Categoría | Rendimiento |
| La corrección es disruptiva o no disruptiva | Non-breaking |
| Habilitado de forma predeterminada en .NET 10 | Como sugerencia |
Causa
La Success propiedad del resultado de Regex.Match se usa para comprobar si un patrón coincide.
Descripción de la regla
Regex.IsMatch es más sencillo y más rápido que Regex.Match(...).Success. El IsMatch método está optimizado para el caso en el que solo es necesario saber si existe una coincidencia, en lugar de lo que es la coincidencia. La llamada Match() y, a continuación, la comprobación Success realiza un trabajo innecesario que puede afectar al rendimiento.
Cómo corregir infracciones
Reemplace las llamadas a por Regex.Match(...).SuccessRegex.IsMatch(...).
Hay disponible una corrección de código que realiza automáticamente esta transformación.
Example
El fragmento de código siguiente muestra una infracción de 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
El siguiente fragmento de código corrige la infracción:
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
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia de esta regla si el rendimiento no es un problema.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA1874
// The code that's violating the rule is on this line.
#pragma warning restore CA1874
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1874.severity = none
Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.