HindariDefaultValueSwitchParameter

Tingkat Keparahan : Peringatan

Status default: Selalu diaktifkan

Deskripsi

Aturan ini mendeteksi parameter sakelar yang diberi nilai $truedefault . Parameter pengalihan tidak boleh memiliki nilai default. Secara desain, parameter sakelar adalah $false ketika tidak ditentukan dan $true saat disertakan dalam perintah. Menetapkan nilai $true default ke parameter sakelar melanggar prinsip desain ini dan dapat menyebabkan perilaku yang tidak terduga.

Jika parameter Anda hanya perlu menerima true dan nilai, gunakan jenis alih-alih false[Switch].[Boolean] PowerShell secara otomatis menangani parameter sakelar dengan benar tanpa memerlukan nilai default.

Untuk memperbaiki masalah ini, hapus nilai default dari deklarasi parameter sakelar. Sakelar secara alami default ke $false saat tidak ditentukan, memungkinkan logika Anda merespons input penelepon dengan tepat.

Untuk mempelajari lebih lanjut, lihat Pedoman Pengembangan yang Sangat Disarankan.

Contoh

Tidak sesuai

function Test-Script
{
    [CmdletBinding()]
    Param
    (
        [String]
        $Param1,

        [switch]
        $Switch=$True
    )
    ...
}

Sesuai

function Test-Script
{
    [CmdletBinding()]
    Param
    (
        [String]
        $Param1,

        [switch]
        $Switch
    )

    ...
}

Mengonfigurasi aturan

Aturan ini selalu diaktifkan dan tidak dapat dikonfigurasi. Gunakan salah satu metode berikut untuk menghindari penggunaan aturan ini:

  • Buat file konfigurasi aturan kustom untuk hanya menyertakan aturan yang Anda inginkan atau kecualikan aturan yang tidak Anda inginkan.
  • Tambahkan atribut penekanan aturan yang sesuai ke kode Anda untuk menekan aturan untuk blok kode tertentu. Untuk informasi selengkapnya, lihat bagian Menekan aturanMenggunakan PSScriptAnalyzer.