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.