CA1850: Voorkeur voor statische HashData
methode ComputeHash
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1850 |
Titel | Voorkeur voor statische HashData methode ComputeHash |
Categorie | Prestaties |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
Een exemplaar van een type dat is afgeleid van HashAlgorithm , wordt gemaakt om de ComputeHash
methode aan te roepen en dat type heeft een statische HashData
methode.
Beschrijving van regel
Statische HashData
methoden zijn geïntroduceerd in .NET 5 op de volgende typen:
Met deze methoden kunt u code vereenvoudigen in gevallen waarin u alleen bepaalde gegevens wilt hashen.
Het is efficiënter om deze statische HashData
methoden te gebruiken dan om een HashAlgorithm
exemplaar te maken en te beheren dat moet worden aangeroepen ComputeHash
.
Schendingen oplossen
Over het algemeen kunt u de regel herstellen door de code te wijzigen om het gebruik van het HashAlgorithm
exemplaar aan te roepen HashData
en te verwijderen.
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
De vorige code kan worden gewijzigd om de statische HashData(Byte[]) methode rechtstreeks aan te roepen.
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
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.