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 8 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 zum Aufrufen von ComputeHash zu erstellen und zu verwalten.

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.

Siehe auch