-
Notifications
You must be signed in to change notification settings - Fork 508
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow VSCode configuration of PSScriptAnalyzer rules #1443
Comments
How would you plan on addressing rules that are configurable such as |
@TheIncorrigible1 Good question. I don't have anything particular in mind. The fact that we are even proposing to make a settings-embedded JSON configuration for a psd1-file-configured tool already feels a bit odd to me, but it seems to be what some users are asking for. The first two solutions I can imagine suggested are:
|
I don't see why we can't have our cake and eat it, too! There are probably a few ways to go about this in JSON syntax, but, perhaps the easiest is to modify the proposed {
"powershell.scriptAnalysis.rules": {
"disable": [
"PSAvoidTrailingWhitespace"
],
"enable": [
{
"rule": "PSPlaceOpenBrace",
"configuration": {
"Enable": true,
"OnSameLine": true,
"NewLineAfter": true
}
},
{ "rule": "PSUseSingulareNouns" },
]
}
} So, one rule can have a configuration, while the second rule, which is not configurable, does not--so the user would not provide a configuration. But even if the user were to provide a configuration for a non-configurable rule, and even if the configuration is added to a generated PSScriptAnalyserSettings.psd1 file, wouldn't it simply be ignored since PSScriptAnalyzer would never attempt to configure it in the first place since the rule is not configurable? |
It would be nice if PSScriptAnalyzer Rules were stored in the User Settings / Extensions area (JSON). I ran into this as I wanted to customize which rules apply, and I chased this link down: I set the: "powershell.scriptAnalysis.settingsPath": "", to toggle via a script (which is example #3 in the 'superuser' page. I currently use an extension 'Settings Sync'. If the PSScriptAnalyzer Rules were stored in the User Settings, it would simplify dealing with these toggles for me, as they would sync along with all my other settings. |
The aspect of selective disabling / enabling of rules is essentially a duplicate of #823, which asks that the existing GUI capability of selecting rules ( Adding rule configuration would be nice too (for which a GUI method will probably never be implemented due to complexity, if I were to guess). @fourpastmidnight: I like the idea, but for rule-name-only entries you should be able to use just the name as a string value; e.g., |
It seems |
PSSA has it's own settings file format. You can use it and configure user/workspace setting to point to that file:
The nice thing with this approach is that you can use this PSSA settings file with PSSA outside of VSCode - as part of a command line build, interactive invocation of PSSA, etc. If you open the VSCode examples, there is a sample PSScriptAnalyzerSettings.psd1 file you can start with. |
I wonder if there is a way to set global configuration instead of making a copy of |
@hongwen000 My workaround is:
Helper function: # Check admin rights
function Test-Elevation {
$windowsPrincipal = [System.Security.Principal.WindowsPrincipal]::new( [System.Security.Principal.WindowsIdentity]::GetCurrent() )
$windowsPrincipal.IsInRole( [System.Security.Principal.WindowsBuiltInRole]::Administrator )
}
# VSCode PSScriptAnalyzerSettings
if (Test-Elevation) {
if ( -NOT (Test-Path "C:\Users\Public\PSScriptAnalyzerSettings.psd1")) {
New-Item -ItemType SymbolicLink -Path "C:\Users\Public\PSScriptAnalyzerSettings.psd1" -Value "$PSProfileDirectory\PSScriptAnalyzerSettings.psd1" | Out-Null
}
} Hope this help. |
@ALIENQuake Wow, thanks so much for your reply! It looks great, but I am a little confused about some details:
|
@hongwen000 Nr 2 😃 |
i suggest @hongwen000 create a .vscode folder with a settings.json in the root of the repo containing:
an have you repo specific PSScriptAnalyzerSettings.psd1 in the root of the repo. |
To follow on from the comments starting at #1429 (comment)...
PSSA rules should be enable-able and disable-able in VSCode configuration. The current proposal is:
Current proposed format is:
The text was updated successfully, but these errors were encountered: