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 9 | 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 HashData
foram introduzidos no .NET 5 nos seguintes tipos:
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 de um arquivo, pasta ou projeto, defina sua gravidade 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.