CA1850: Statische HashData
-Methode gegenüber ComputeHash
bevorzugen
Eigenschaft | Wert |
---|---|
Regel-ID | CA1850 |
Titel | Statische HashData -Methode gegenüber ComputeHash bevorzugen |
Kategorie | Leistung |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | Als Vorschlag |
Ursache
Eine Instanz eines Typs, der von HashAlgorithm abgeleitet wird, wird zum Aufrufen der ComputeHash
-Methode erstellt, und dieser Typ verfügt über eine statische HashData
-Methode.
Regelbeschreibung
Statische HashData
-Methoden wurden in .NET 5 für die folgenden Typen eingeführt:
Diese Methoden vereinfachen Code in Fällen, in denen Sie nur Hashwerte für einige Daten erstellen möchten.
Es ist effizienter, diese statischen HashData
Methoden zu verwenden, als eine HashAlgorithm
Instanz zu erstellen und zu verwalten, die aufgerufen werden ComputeHash
soll.
Behandeln von Verstößen
Im Allgemeinen können Sie die Regel korrigieren, indem Sie den Code so ändern, dass HashData
aufgerufen wird und die Notwendigkeit der Verwendung der HashAlgorithm
-Instanz entfällt.
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
Der vorherige Code kann so geändert werden, dass die statische HashData(Byte[])-Methode direkt aufgerufen wird.
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
Wann sollten Warnungen unterdrückt werden?
Eine Warnung, die auf dieser Regel basiert, kann problemlos unterdrückt werden.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.