Partilhar via


CA1850: Prefira o método estático HashData em vez do ComputeHash

Property valor
ID da regra CA1850
Título Prefira o método estático HashData em vez do método ComputeHash
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Como sugestão

Motivo

Uma instância de um tipo que deriva de HashAlgorithm é criada para chamar seu ComputeHash método, e esse tipo tem um método estático HashData .

Descrição da regra

Métodos estáticos foram introduzidos no .NET 5 nos seguintes tipos HashData :

Esses métodos ajudam a simplificar o código nos casos em que você deseja apenas hash alguns dados.

É mais eficiente usar esses métodos estáticos HashData do que criar e gerenciar uma HashAlgorithm instância para chamar ComputeHash.

Como corrigir violações

Em geral, você pode corrigir a regra alterando seu código para chamar HashData e remover o HashAlgorithm uso da instância.

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

O código anterior pode ser alterado para chamar o método estático HashData(Byte[]) diretamente.

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

Quando suprimir avisos

É seguro suprimir uma advertência desta regra.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

#pragma warning disable CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850

Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também