CA1850 : préférez la méthode HashData
statique par rapport à ComputeHash
Propriété | Value |
---|---|
Identificateur de la règle | CA1850 |
Titre | Préférer la méthode HashData statique à ComputeHash |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | À titre de suggestion |
Cause
Une instance d’un type qui dérive de HashAlgorithm est créée pour appeler sa méthode ComputeHash
, et ce type a une méthode HashData
statique.
Description de la règle
Les méthodes HashData
statiques ont été introduites dans .NET 5 sur les types suivants :
Ces méthodes permettent de simplifier le code dans les cas où vous souhaitez simplement hacher des données.
Il est plus efficace d’utiliser ces méthodes HashData
statiques que de créer et de gérer une instance HashAlgorithm
pour appeler ComputeHash
.
Comment corriger les violations
En règle générale, vous pouvez corriger la règle en modifiant votre code pour appeler HashData
et supprimer l’utilisation de l’instance HashAlgorithm
.
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
Le code précédent peut être modifié pour appeler directement la méthode HashData(Byte[]) statique.
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
Quand supprimer les avertissements
Vous pouvez supprimer un avertissement de cette règle.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.