PowerShell / PowerShell/PSScriptAnalyzer
Formatting misses certain keywords (unary operators, 'until')
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C#
- Sterne
- 2.2k
- Forks
- 414
- Ø Merge
- 13 Std. 1 Min.
- Gemergte PRs (30 T.)
- 2
Beschreibung
I found that during formatting, some keywords aren't separated from leading braces (while), and some are seemingly ignored entirely (until). Also, unary operators (-not, -bnot, etc.) aren't separated with whitespace the same way as binary operators (-eq, -like, etc.).
Steps to reproduce
- Paste the following into a script
- Use Invoke-Formatter or the PowerShell VSCode extension to format the document
if(-not$false) {
do{
"Hello!"
}until(
$True
)
do{
"Oh, hi!"
}while(
-not$True
)
while(-not$True) {
"This won't show up."
}
}
Expected behavior
Roughly the following output. Some is dependent on brace style (OTBS in this case), but all rules for inserting whitespace around keywords and operators should be enabled.
if (-not $false) {
do {
'Hello!'
} until (
$True
)
do {
'Oh, hi!'
} while (
-not $True
)
while (-not $True) {
"This won't show up."
}
}
Actual behavior
if (-not$false) { # -not isn't separated by whitespace
do {
'Hello!'
}until( # no whitespace around Until
$True
)
do {
'Oh, hi!'
}while ( # only trailing whitespace for While
-not$True # no separation
)
while (-not$True) { # no separation for -not and -bnot
"This won't show up."
}
}
Environment data
> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.5737
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.5737
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.23.0
1.23.0 is the version included with the current (2025.0.0) VSCode PowerShell extension. I've also installed and tested 1.24.0 with the same results.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den bereitgestellten Reproducer durch Invoke-Formatter laufen zu lassen und das Ergebnis mit der erwarteten Ausgabe zu vergleichen. Verfolge die Behandlung der Schlüsselwortabstände durch den Formatter für while und until und anschließend für unäre Operatoren wie -not und -bnot. Als abgeschlossen gilt die Arbeit, wenn die formatierte Ausgabe diese Schlüsselwörter und Operatoren wie in den gemeldeten Fällen voneinander trennt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- csharp, powershell
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 48/100