Comparteix a través de


CA1850: Preferencia del método estático HashData sobre ComputeHash

Propiedad Valor
Identificador de la regla CA1850
Título Preferencia del método estático HashData sobre ComputeHash
Categoría Rendimiento
La corrección interrumpe o no interrumpe Sin interrupción
Habilitado de forma predeterminada en .NET 10 Como sugerencia
Idiomas aplicables C# y Visual Basic

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 ayudan a simplificar el código en los casos en los que solo se desea hacer un hash de algunos datos.

Es más eficaz usar estos métodos estáticos HashData que crear y administrar una instancia HashAlgorithm para llamar a ComputeHash.

Cómo corregir infracciones

En general, puede corregir la regla cambiando el código para llamar al HashData y eliminar el uso de la instancia 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

Es seguro 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.

Vea también