PowerShell / vscode-powershell

Provides PowerShell language and debugging support for Visual Studio Code
https://marketplace.visualstudio.com/items/ms-vscode.PowerShell
MIT License
1.72k stars 492 forks source link

Set `Code Formatting:` settings based on existing PSScriptAnalyzerSettings.psd1 so autoformat stays in sync with ScriptAnalyzer #4993

Open daprahamian opened 6 months ago

daprahamian commented 6 months ago

Prerequisites

Summary

I need to have some PSScriptAnalyzer settings defined in a PSScriptAnalyzerSettings.psd1 so I can validate my code as part of CI. I also use VSCode, and keeping vscode settings and PSScriptAnalyzer settings in sync is a bit of a pain. Since PSScriptAnalyzer has a bunch of code formatting options supported, it would be great to be able to tell vscode to "format it the way Invoke-Formatter would.

Proposed Design

No response

JustinGrote commented 6 months ago

Is there a specific issue with this setting that is not reading your settings file? image

daprahamian commented 6 months ago

@JustinGrote here is an example:

# PSScriptAnalyzerSettings.psd1
@{
    Rules = @{
        PSAlignAssignmentStatement = @{
            Enable         = $false
            CheckHashtable = $false
        }
    }
}
# test_file.ps1
$dict = @{
    foo = "bar"
    basdasdasd = "zoom"
}

With the following setup, running Invoke-ScriptAnalyzer -Settings ./PSScriptAnalyzerSettings.psd1 -Path ./test_file.ps1 -Fix does not result in any changes to the file. But if I hit Ctrl+S inside of vscode, the file is auto-formatted as follows:

$dict = @{
    foo = "bar"
    basdasdasd = "zoom"
}

despite the fact that I have set

        PSAlignAssignmentStatement = @{
            Enable         = $false
            CheckHashtable = $false
        }