CA1850: Preferencia del método estático HashData
sobre ComputeHash
Propiedad | Value |
---|---|
Identificador de la regla | CA1850 |
Título | Preferencia del método estático HashData sobre ComputeHash |
Categoría | Rendimiento |
La corrección es problemática o no problemática | Poco problemático |
Habilitado de forma predeterminada en .NET 9 | Como sugerencia |
Causa
Se crea una instancia de un tipo que deriva de HashAlgorithm para llamar a su método ComputeHash
y ese tipo tiene un método HashData
estático.
Descripción de la regla
Los métodos HashData
estáticos se introdujeron en .NET 5 en los tipos siguientes:
Estos métodos permiten simplificar el código en los casos en los que solo se quiere crear un algoritmo hash de algunos datos.
Es más eficaz usar estos métodos estáticos HashData
que crear y administrar una instancia de HashAlgorithm
para llamar a ComputeHash
.
Cómo corregir infracciones
En general, puede corregir la regla cambiando el código para llamar a HashData
y quitar el uso de la instancia de HashAlgorithm
.
public bool CheckHash(byte[] buffer)
{
using (var sha256 = SHA256.Create())
{
byte[] digest = sha256.ComputeHash(buffer);
return DoesHashExist(digest);
}
}
Public Function CheckHash(buffer As Byte()) As Boolean
Using sha256 As SHA256 = SHA256.Create()
Dim digest As Byte() = sha256.ComputeHash(buffer)
Return DoesHashExist(digest)
End Using
End Function
El código anterior se puede cambiar para llamar directamente al método HashData(Byte[]) estático.
public bool CheckHash(byte[] buffer)
{
byte[] digest = SHA256.HashData(buffer);
return DoesHashExist(digest);
}
Public Function CheckHash(buffer As Byte()) As Boolean
Dim digest As Byte() = SHA256.HashData(buffer)
Return DoesHashExist(digest)
End Function
Cuándo suprimir las advertencias
Se puede suprimir una advertencia de esta regla.
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 CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850
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.CA1850.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.