CA1850 : préférez la méthode HashData statique par rapport à ComputeHash

Propriété Valeur
Identificateur de la règle CA1850
Titre Préférer la méthode HashData statique à ComputeHash
Catégorie Performance
Le correctif a un effet disruptif ou non disruptif Sans rupture
Activé par défaut dans .NET 10 À titre de suggestion
Langues applicables C# et Visual Basic

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 statiques HashData que de créer et de gérer une HashAlgorithm instance à 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

Il est sans danger de 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