HindariGlobalVars

Tingkat Keparahan : Peringatan

Status default: Selalu diaktifkan

Description

Anda harus menghindari memodifikasi variabel global dalam skrip dan fungsi Anda karena skrip atau fungsi lain yang berjalan dalam sesi yang sama dapat bergantung padanya. Hal ini dapat menyebabkan perilaku yang tidak terduga dan menyulitkan men-debug kode Anda.

Aturan ini mendeteksi penggunaan variabel dengan pengubah cakupan global. PowerShell mengontrol akses ke variabel, fungsi, alias, dan drive melalui mekanisme yang dikenal sebagai cakupan. Variabel dan fungsi yang ada saat PowerShell dimulai dibuat dalam cakupan global. Variabel cakupan global meliputi:

  • Variabel otomatis
  • Variabel preferensi

Aturan ini tidak mendeteksi penggunaan New-Variable cmdlet untuk membuat variabel dalam cakupan global atau cmdlet lainnya *-Variable untuk bekerja dengan variabel dalam cakupan global. Ini hanya mendeteksi ekspresi variabel dengan pengubah cakupan global, seperti $global:example.

Aturan ini tidak berlaku untuk ekspresi variabel yang menggunakan pengubah cakupan global di mana nama variabel adalah untuk variabel otomatis atau variabel preferensi.

Gunakan cakupan lokal atau skrip untuk variabel, bukan cakupan global. Untuk mempelajari lebih lanjut, lihat about_Scopes.

Example

Tidak sesuai

$var1 = 'foo'
function Test-NotGlobal ($var) {
    $Global:var1 = $var
}
Test-NotGlobal 'bar'
$var1

Sesuai

$var1 = 'foo'
function Test-NotGlobal ($var) {
    $var1 = $var
}
Test-NotGlobal 'bar'
$var1

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.