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
如需詳細資訊,請參閱 如何隱藏程式碼分析警告 。