PowerShell / PowerShell/PSScriptAnalyzer

Invoke-Formatter loses one level of identation after chain with more than 2 commands and script blocks

Ouverte
#1,378 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

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

Description

Steps to reproduce

Input script, formatted already as expected.

Function a {
    Function b {
        Get-Content blah | ? {
            $_ -match foo    
        } | Set-Content bleh

        $AnotherStatement = 1
    }

    Write-Host "hi"
    b
    exit 1
}

a

Expected behavior

The example above after formatted looks the same.

Actual behavior

After a chain of more than 2 commands which spans several lines, the formatter loses one level of indentation. Using $(...) triggers the same problem.

Function a {
    Function b {
        Get-Content blah | ? {
            $_ -match foo
        } | Set-Content bleh

    $AnotherStatement = 1
}

Write-Host "hi"
b
exit 1
}

a

Environment data

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.15063.1805
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.15063.1805
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

> (Get-Module -ListAvailable PSScriptAnalyzer).Version | ForEach-Object { $_.ToString() }
1.18.3

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 reproduire le comportement signalé avec Invoke-Formatter et le script PowerShell de l’issue, y compris le pipeline comportant plusieurs commandes et la variante $(...). Suivez le point d’entrée du formateur et vérifiez que le formatage préserve l’indentation d’origine des instructions qui suivent ces chaînes et ces blocs de script.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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