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.

Voir aussi