PowerShell / PowerShell/PSScriptAnalyzer

Formatter doesn't indent bracketed multi-line arguments correctly

Open
#1,748 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area - Formatter Issue - Bug Up-for-Grabs
Dominant language
C#
Stars
2.2k
Forks
414
Avg merge
13h 1m
Merged PRs (30d)
2

Description

Bracketed Commandlet arguments spanning multiple lines should increase the indentation level. See Invoke-Bar in the below example.

Expected behavior

Invoke-Foo `
    -Argument (
            Invoke-Bar -Argument
        ) `
    -Argument2

Actual behavior

Invoke-Foo `
    -Argument (
    Invoke-Bar -Argument
) `
    -Argument2

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

Environment data

> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.1237
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1237
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.19.1
1.20.0

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the formatter output with the Invoke-Foo and Invoke-Bar example in the issue using PSScriptAnalyzer. Trace the formatter handling of bracketed, multi-line command arguments and inspect existing formatter tests. Done means the nested Invoke-Bar argument is indented as shown in the expected output and the regression is covered by a test.

Written by the indexing model from the issue text.

Assessment

Tech stack
powershell
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.