CA1850: 静的な HashData
メソッドは ComputeHash
に優先します
プロパティ | 値 |
---|---|
ルール ID | CA1850 |
Title | 静的な HashData メソッドは ComputeHash に優先します |
[カテゴリ] | パフォーマンス |
修正が中断ありか中断なしか | なし |
.NET 8 では既定で有効 | 提案として |
原因
HashAlgorithm から派生した型のインスタンスが、その ComputeHash
メソッドを呼び出すために作成され、その型には静的な HashData
メソッドがあります。
規則の説明
静的な HashData
メソッドは、.NET 5 で次の型に導入されました。
これらのメソッドは、一部のデータをハッシュするだけの場合にコードを簡略化するのに役立ちます。
ComputeHash
を呼び出す HashAlgorithm
インスタンスを作成および管理するよりも、静的 HashData
メソッドを使用する方が効率的です。
違反の修正方法
一般に、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
詳細については、「コード分析の警告を抑制する方法」を参照してください。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET