CA1850: Preferisce il metodo statico HashData rispetto a ComputeHash

Proprietà valore
ID regola CA1850
Title Preferisce il metodo statico HashData rispetto a ComputeHash
Categoria Prestazioni
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

Un'istanza di un tipo che deriva da HashAlgorithm viene creata per chiamare il relativo ComputeHash metodo e tale tipo ha un metodo statico HashData .

Descrizione regola

I metodi statici HashData sono stati introdotti in .NET 5 nei tipi seguenti:

Questi metodi consentono di semplificare il codice nei casi in cui si vuole solo eseguire l'hashing di alcuni dati.

È più efficiente usare questi metodi statici HashData rispetto a creare e gestire un'istanza HashAlgorithm di per chiamare ComputeHash.

Come correggere le violazioni

In generale, è possibile correggere la regola modificando il codice per chiamare HashData e rimuovere l'uso dell'istanza 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

Il codice precedente può essere modificato per chiamare direttamente il metodo statico HashData(Byte[]) .

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 eliminare gli avvisi

È sicuro eliminare un avviso da questa regola.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche