CA1850:偏好使用靜態 HashData 方法 ComputeHash

屬性
規則識別碼 CA1850
標題 偏好使用靜態 HashData 方法而不是 ComputeHash
類別 效能
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 建議

原因

衍生自 HashAlgorithm 的類型實例會建立來呼叫其 ComputeHash 方法,且該類型具有靜態 HashData 方法。

檔案描述

靜態 HashData 方法是在 .NET 5 中引進的下列類型:

這些方法有助於簡化程式碼,以防您只想要雜湊某些資料。

使用這些靜態 HashData 方法比建立和管理 HashAlgorithm 要呼叫 ComputeHash 的實例更有效率。

如何修正違規

一般而言,您可以藉由將程式碼變更為呼叫 HashData 和移除 實例的使用 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

您可以變更先前的程式碼,直接呼叫靜態 HashData(Byte[]) 方法。

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

隱藏警告的時機

隱藏此規則的警告是安全的。

隱藏警告

如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。

#pragma warning disable CA1850
// The code that's violating the rule is on this line.
#pragma warning restore CA1850

若要停用檔案、資料夾或專案的規則,請在組態檔 中將其嚴重性設定為 。 none

[*.{cs,vb}]
dotnet_diagnostic.CA1850.severity = none

如需詳細資訊,請參閱 如何隱藏程式碼分析警告

另請參閱