PowerShell / PowerShell/PSScriptAnalyzer

Suggestion for new rule - Ensure that variables used in a function is always declared in the local scope

Ouverte
#632 3 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

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

Description

In order to reduce the number of hard to debug errors, we run our PowerShell scripts with Set-StrictMode -Version Latest. This lets us catch issues where we e.g. have misspelled a variable name (or forgot to assign it before using it) during runtime. But it would be immensely useful to catch these kinds of errors before we run the scripts, e.g. during an automated build.

We have deployment scripts that run for quite a long time (several hours), and silly misspelled variable names or misplaced variable assignments then costs quite a bit of development time. Catching these errors early would be immensely useful.

Example of something that should cause an error:

function Get-Foobar()
{
    if ($b + 2 -gt 5)
    {
        return $b
    }

    return 5
}

This would be OK:

function Get-Foobar($b)
{
    if ($b + 2 -gt 5)
    {
        return $b
    }

    return 5
}

As would this:

function Get-Foobar()
{
    $b = 123;
    if ($b + 2 -gt 5)
    {
        return $b
    }

    return 5
}

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.

Piste de recherche

Commencez par les deux exemples PowerShell de l’issue et examinez les règles d’analyse et les tests existants du dépôt afin de déterminer où une nouvelle règle doit être ajoutée. Définissez la manière dont les paramètres, les affectations et les références aux variables doivent être traités ; le travail est terminé lorsque l’exemple avec la variable non déclarée est signalé, tandis que les deux exemples valides passent, avec une couverture pour le comportement choisi.

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

Évaluation

Stack technique
powershell
Domaine
devtools
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

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