UseLiteralInitializerForHashtable

重症度レベル:警告

デフォルト状態:常に有効

説明

このルールは、 [hashtable]::new() メソッドや New-Object -TypeName hashtable コマンドレットで作成されたハッシュテーブルを IEqualityComparer オブジェクトを渡さずに検出します。 [hashtable]::new()やNew-Object -TypeName hashtableを使ってハッシュテーブルを作成すると、キーはデフォルトで大文字を区別して検索されます。

しかし、PowerShellは大文字大文字に気分がないため、ハッシュテーブルはこの動作を維持するべきです。 一貫した大文字非応答キー検索を確保するために、代わりにリテラルハッシュテーブル式を使用します。

Example

非準拠

$hashtable = [hashtable]::new()

対応

$hashtable = @{}

ルールの設定

このルールは常に有効で、設定はできません。 このルールを避けるために、以下のいずれかの方法を用いてください。

  • 欲しいルールだけを含めるか、不要なルールを除外するカスタムルール設定ファイルを作成しましょう。
  • 特定のコードブロックに対してルール抑制を抑制するために、適切なルール抑制属性をコードに追加してください。 詳細については、PSScriptAnalyzerの使用に関する「抑制ルール」セクションをご覧ください。