CA1307: Especificar StringComparison para mayor claridad
Propiedad | Value |
---|---|
Identificador de la regla | CA1307 |
Título | Especificar StringComparison para mayor claridad |
Categoría | Globalización |
La corrección es problemática o no problemática | Poco problemático |
Habilitado de forma predeterminada en .NET 8 | No |
Causa
Una operación de comparación de cadenas utiliza una sobrecarga de método que no establece un parámetro StringComparison.
Descripción de la regla
Muchas operaciones de comparación de cadenas proporcionan una sobrecarga que acepta un valor de enumeración StringComparison como parámetro.
Siempre que existe una sobrecarga que tome un parámetro StringComparison, se debe usar en lugar de una sobrecarga que no tome este parámetro. Al establecer este parámetro explícitamente, el código suele ser más claro y más fácil de mantener. Para obtener más información, vea Especificar comparaciones de cadenas explícitamente.
Nota
Esta regla no tiene en cuenta el valor predeterminado StringComparison utilizado por el método de comparación. Por lo tanto, puede ser potencialmente ruidoso para los métodos que usan la comparación de cadenas Ordinal
de forma predeterminada y el usuario diseñado para usar este modo de comparación predeterminado.
Si solo quiere ver las infracciones de los métodos de cadena conocidos que usan la comparación de cadenas específica de la referencia cultural de forma predeterminada, use CA1310: Specify StringComparison for correctness(Especificar StringComparison para mayor corrección) en su lugar.
Cómo corregir infracciones
Para corregir una infracción de esta regla, cambie los métodos de comparación de cadenas a las sobrecargas que aceptan la enumeración StringComparison como parámetro. Por ejemplo, cambia str1.IndexOf(ch1)
a str1.IndexOf(ch1, StringComparison.Ordinal)
.
Cuándo suprimir las advertencias
Es seguro suprimir una advertencia de esta regla cuando no es necesaria la claridad de la intención. Por ejemplo, es posible que el código de prueba o el código no traducible no lo requieran.
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 CA1307
// The code that's violating the rule is on this line.
#pragma warning restore CA1307
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA1307.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.