Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
CA1850: Upřednostněte statickou
| 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 10 | 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.