Extension's Formatter ignores config file.
See original GitHub issueIssue Description
The extension’s formatter is ignoring the config file: PSScriptAnalyzerSettings.psd1
I didn’t file this in /PSScriptAnalyzer because it (Invoke-Formatter) works as expected with the same config file.
Properties set under "powershell.codeFormatting.*
are working.
Except it’s ignoring "powershell.scriptAnalysis.settingsPath": "PSScriptAnalyzerSettings.psd1"
when formatting.
I can disable changing process
using Invoke-Formatter
using this config
@{
'Rules' = @{
'PSAvoidUsingCmdletAliases' = @{
'Whitelist' = @('process')
}
}
}
Expected Behaviour
Input example:
function foo {
param ()
Process {
ls
process
}
}
Should format as
function foo {
param ()
Process {
Get-ChildItem
process
}
}
Actual Behaviour
function foo {
param ()
Process {
Get-ChildItem
Get-Process
}
}
System Details
A tiny workspace reproduces the example: 2020-10-20 - Invoke-Formatter - ignores config.zip
System Details Output (Click to Expand)
### VSCode version: 1.50.1 d2e414d9e4239a252d1ab117bd7067f125afd80a x64
### VSCode extensions:
alefragnani.Bookmarks@11.4.0
arcticicestudio.nord-visual-studio-code@0.14.0
bungcip.better-toml@0.3.2
christian-kohler.path-intellisense@2.3.0
CoenraadS.bracket-pair-colorizer@1.0.61
CoenraadS.bracket-pair-colorizer-2@0.2.0
DavidAnson.vscode-markdownlint@0.37.1
donjayamanne.githistory@0.6.12
DotJoshJohnson.xml@2.5.1
eamodio.gitlens@10.2.2
eamodio.tsl-problem-matcher@0.3.1
Equinusocio.vsc-community-material-theme@1.4.2
Equinusocio.vsc-material-theme@33.0.0
equinusocio.vsc-material-theme-icons@1.2.0
esbenp.prettier-vscode@5.7.1
evan-buss.font-switcher@3.1.0
firefox-devtools.vscode-firefox-debug@2.9.1
formulahendry.code-runner@0.11.1
juanmnl.vscode-theme-hydra@3.1.0
matangover.mypy@0.1.4
mechatroner.rainbow-csv@1.7.1
medo64.code-point@1.7.1
ms-dotnettools.csharp@1.23.4
ms-mssql.mssql@1.9.0
ms-python.python@2020.9.114305
ms-python.vscode-pylance@2020.10.2
ms-vscode-remote.remote-wsl@0.50.1
ms-vscode.cpptools@1.0.1
ms-vscode.hexeditor@1.3.0
ms-vscode.powershell@2020.6.0 [disabled]
ms-vscode.powershell-preview@2020.9.0
ms-vscode.vscode-typescript-tslint-plugin@1.2.3
msjsdiag.debugger-for-chrome@4.12.11
octref.vscode-json-transform@0.1.2
PKief.material-icon-theme@4.3.0
PowerQuery.vscode-powerquery@0.1.5
RandomFractalsInc.vscode-data-preview@2.2.0
redhat.vscode-xml@0.13.0
RobbOwen.synthwave-vscode@0.1.8
rogalmic.bash-debug@0.3.9
rust-lang.rust@0.7.8
sallar.vscode-duotone-dark@0.3.3
shakram02.bash-beautify@0.1.1
shd101wyy.markdown-preview-enhanced@0.5.13
stansw.vscode-odata@0.1.0
stuart.unique-window-colors@1.0.51
vadimcn.vscode-lldb@1.6.0
VisualStudioExptTeam.vscodeintellicode@1.2.10
webfreak.debug@0.25.0
wwm.better-align@1.1.6
yzhang.markdown-all-in-one@3.3.0
zhuangtongfa.material-theme@3.9.3
### PSES version: 2.3.0.0
Name Version
---- -------
PowerShellEditorServices.Commands 0.2.0
PowerShellEditorServices.VSCode 0.2.0
### PowerShell version:
Name Value
---- -----
PSVersion 7.0.3
PSEdition Core
GitCommitId 7.0.3
OS Microsoft Windows 10.0.19041
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Attached Logs
Environment Information
Visual Studio Code
Name | Version |
---|---|
Operating System | Windows_NT x64 10.0.19041 |
VSCode | 1.50.1 |
PowerShell Extension Version | 2020.9.0 |
PowerShell Information
Name | Value |
---|---|
PSVersion | 7.0.3 |
PSEdition | Core |
GitCommitId | 7.0.3 |
OS | Microsoft Windows 10.0.19041 |
Platform | Win32NT |
PSCompatibleVersions | 1.0 2.0 3.0 4.0 5.0 5.1.10032.0 6.0.0 6.1.0 6.2.0 7.0.3 |
PSRemotingProtocolVersion | 2.3 |
SerializationVersion | 1.1.0.1 |
WSManStackVersion | 3.0 |
Visual Studio Code Extensions
Visual Studio Code Extensions(Click to Expand)
Extension | Author | Version |
---|---|---|
better-toml | bungcip | 0.3.2 |
Bookmarks | alefragnani | 11.4.0 |
code-point | medo64 | 1.7.1 |
code-runner | formulahendry | 0.11.1 |
cpptools | ms-vscode | 1.0.1 |
csharp | ms-dotnettools | 1.23.4 |
debug | webfreak | 0.25.0 |
debugger-for-chrome | msjsdiag | 4.12.11 |
font-switcher | evan-buss | 3.1.0 |
githistory | donjayamanne | 0.6.12 |
gitlens | eamodio | 10.2.2 |
hexeditor | ms-vscode | 1.3.0 |
markdown-all-in-one | yzhang | 3.3.0 |
material-icon-theme | PKief | 4.3.0 |
material-theme | zhuangtongfa | 3.9.3 |
mssql | ms-mssql | 1.9.0 |
mypy | matangover | 0.1.4 |
nord-visual-studio-code | arcticicestudio | 0.14.0 |
path-intellisense | christian-kohler | 2.3.0 |
powershell-preview | ms-vscode | 2020.9.0 |
prettier-vscode | esbenp | 5.7.1 |
python | ms-python | 2020.9.114305 |
rainbow-csv | mechatroner | 1.7.1 |
remote-wsl | ms-vscode-remote | 0.50.1 |
rust | rust-lang | 0.7.8 |
synthwave-vscode | RobbOwen | 0.1.8 |
tsl-problem-matcher | eamodio | 0.3.1 |
vsc-community-material-theme | Equinusocio | 1.4.2 |
vsc-material-theme | Equinusocio | 33.0.0 |
vsc-material-theme-icons | equinusocio | 1.2.0 |
vscode-data-preview | RandomFractalsInc | 2.2.0 |
vscode-duotone-dark | sallar | 0.3.3 |
vscode-firefox-debug | firefox-devtools | 2.9.1 |
vscode-json-transform | octref | 0.1.2 |
vscode-lldb | vadimcn | 1.6.0 |
vscode-odata | stansw | 0.1.0 |
vscode-powerquery | PowerQuery | 0.1.5 |
vscode-pylance | ms-python | 2020.10.2 |
vscode-theme-hydra | juanmnl | 3.1.0 |
vscode-typescript-tslint-plugin | ms-vscode | 1.2.3 |
vscode-xml | redhat | 0.13.0 |
vscodeintellicode | VisualStudioExptTeam | 1.2.10 |
manual_invoke_formatter.ps1 (Click to Expand)
$settings = 'PSScriptAnalyzerSettings.psd1'
$src = @'
function foo {
param ()
Process {
ls
process
}
}
'@
$expected = @'
function foo {
param ()
Process {
Get-ChildItem
process
}
}
'@
Write-Host -fore red "Input"
$src
Write-Host -fore red "Result"
$result = Invoke-Formatter -ScriptDefinition $src -Settings $settings
$result
"Expected?"
$result -eq $expected
Issue Analytics
- State:
- Created 3 years ago
- Reactions:1
- Comments:5 (1 by maintainers)
Top Results From Across the Web
Prettier vscode extension ignoring config files
It seems that the VSCode prettier extension uses the config file in the VSCode settings over the local one, even if that config...
Read more >Configuration File
Overrides let you have different configuration for certain file extensions, folders and specific files. Prettier borrows ESLint's override format. JSON:
Read more >How to configure Prettier and VSCode
Open .vscode/settings.json file and confirm: VSCode Prettier extension is configured as the default formatter. Formatting on save is enabled.
Read more >Configuration
The .stylelintrc file (without extension) can be in JSON or YAML format. You can add a filename extension to help your text editor...
Read more >Clang-Format Style Options — Clang 16.0.0git documentation
When formatting standard input or a file that doesn't have the extension corresponding to its ... clang-format -style=llvm -dump-config > .clang-format.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@corbob:
My original examples weren’t great. This new one shows that
I cannot find a
powershell.formatting
setting that lets me change the formatting settingPSAvoidUsingCmdletAliases
Problem
Formatter breaks code when there’s parse errors.
Invoke-Formatter
runs even on parse errors. Because of that, it’s indirectly mutating code. After fixing the error (like a missing comma), you also have to fix the (now missing)process
blockProposed Solution
ParseError
s are found, don’t runInvoke-Formatter
, otherwiseprocess
for the rulePSAvoidUsingCmdletAliases
( I filed this under
vscode-powershell
because it’s invoking the formatter with its own config)How to Reproduce
PSScriptAnalyzerSettings.psd1
To Reproduce
Case1: Error Case
Case2: Unexpected, but correct behavior.
It looks like @bergmeister may have answered this in the #vscode channel on Discord/Slack Reproduced here to provide context within the issue: @ninmonkey The settings path settings only applies for script analysis, i.e. Invoke-ScriptAnalyzer and not formatting. All formatting related rule properties are settable via the powershell.codeformatting.* settings
I’ll add: if you’re looking for project specific formatting options, you might want to use a workspace settings file
.vscode/settings.json
so that anyone pulling down the code gets your formatting options.