Sdílet prostřednictvím


CA1850: Upřednostněte statickou HashData metodu před ComputeHash

Vlastnost Hodnota
ID pravidla CA1850
Název Preferovat statickou HashData metodu před ComputeHash
Kategorie Výkon
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 9 Jako návrh

Příčina

Instance typu, který je odvozen od HashAlgorithm , je vytvořen pro volání jeho ComputeHash metody a tento typ má statickou HashData metodu.

Popis pravidla

Statické HashData metody byly zavedeny v .NET 5 v následujících typech:

Tyto metody pomáhají zjednodušit kód v případech, kdy chcete pouze zatřiďovat některá data.

Je efektivnější používat tyto statické HashData metody, než vytvořit a spravovat HashAlgorithm instanci pro volání ComputeHash.

Jak opravit porušení

Obecně platí, že pravidlo můžete opravit tak, že změníte kód tak, aby volal HashData a odebral použití HashAlgorithm instance.

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

Předchozí kód lze změnit tak, aby volal statickou HashData(Byte[]) metodu přímo.

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

Kdy potlačit upozornění

Je bezpečné potlačit upozornění z tohoto pravidla.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také