CA1850: Preferuj metodę statyczną HashData za pośrednictwem ComputeHash

Właściwości Wartość
Identyfikator reguły CA1850
Tytuł Preferuj metodę statyczną HashData za pośrednictwem ComputeHash
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Jako sugestia

Przyczyna

Wystąpienie typu pochodzącego z HashAlgorithm klasy jest tworzone w celu wywołania metody ComputeHash , a ten typ ma metodę statyczną HashData .

Opis reguły

Metody statyczne HashData zostały wprowadzone na platformie .NET 5 w następujących typach:

Te metody ułatwiają uproszczenie kodu w przypadkach, w których chcesz po prostu utworzyć skrót danych.

Bardziej wydajne jest użycie tych metod statycznych HashData niż tworzenie wystąpienia w celu wywołania ComputeHashmetody i zarządzanie nimHashAlgorithm.

Jak naprawić naruszenia

Ogólnie rzecz biorąc, regułę można naprawić, zmieniając kod w celu wywołania HashData i usunięcia użycia HashAlgorithm wystąpienia.

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

Poprzedni kod można zmienić w celu bezpośredniego wywołania metody statycznej 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

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też