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 |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | 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.