AvoidGlobalVars should only trigger on assignment

Ouverte
#2,100 1 commentaire 2 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
powershell
Domaine
tooling

Piste de recherche

Commencez par localiser la règle PS AvoidGlobalVars et reproduisez l’exemple de classe PowerShell de l’issue sur PowerShell 7.6-preview4. Le fix est terminé lorsque la lecture de $global:PSEdition ne produit aucun avertissement, tandis que l’affectation d’une variable à la portée globale déclenche toujours la règle.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

PowerShell classes requires variables to be initialized in a method before reference. This causes issues with global variables without scoping as the parser will throw a Variable is not assigned in the method error. To get around this the variable must be scoped but this causes PSScriptAnalyzer to throw a violation. The rule should only trigger when assigning a variable to the global scope not reading.

Steps to reproduce

class Test {
  [void] Abc() {
    if ($global:PSEdition -eq 'core') { write-host core }
  }
}

Expected behavior

No warnings

Actual behavior

RuleName                            Severity     ScriptName Line  Message
--------                            --------     ---------- ----  -------
PSAvoidGlobalVars                   Warning                 3     Found global variable 'global:PSEdition'.

If an unexpected error was thrown then please report the full error details using e.g. $error[0] | Select-Object *

Environment data

7.6-preview4

1.24.0
Langage dominant
C#
Étoiles
2.2k
Forks
415
Merge moyen
13 h 1 min
PR mergées (30 j)
2

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de PowerShell/PSScriptAnalyzer

Toutes les issues de PowerShell/PSScriptAnalyzer

Issues similaires

Plus d'issues C#

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.