PowerShell / vscode-powershell

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

PowerShell extension uses PSScriptAnalyzer settings file - Cannot update rules #899

Open PowerDBAKlaas opened 7 years ago

PowerDBAKlaas commented 7 years ago

I had this error when doing: <ctrl>+<shift>+P, PSScript... image After Uninstall and reinstall the Powershell extension ( version 1.3.2, the same as it was before), there's another issue: image

System Details

PS C:\scripts> code -v 1.13.1 379d2efb5539b09112c793d3d9a413017d736f89 PS C:\scripts> $pseditor.EditorServicesVersion

Major Minor Build Revision


1 3 2 0

PS C:\scripts> code --list-extensions --show-versions ms-mssql.mssql@1.0.0 ms-vscode.PowerShell@1.3.2



### Issue Description

I am experiencing a problem with PSScriptAnalyzer: cannot update the rules

### Attached Logs

[1497967294-c7966750-26b9-4c1a-88bf-382515625aa61497967292400.zip](https://github.com/PowerShell/vscode-powershell/files/1088421/1497967294-c7966750-26b9-4c1a-88bf-382515625aa61497967292400.zip)
PowerDBAKlaas commented 7 years ago

Actually, the thought that something is wrong, started with noticing that the warning and error count ( in the left lower corner) were and are always 0.

PowerDBAKlaas commented 7 years ago

OK "powershell.scriptAnalysis.settingsPath": "bin//PSScriptAnalyzerRules.psd1", was set to a non-existing file, so this was my own fault. Maybe if the error message could say "file not found" I would realize that sooner than with "cannot update the rules"

daviwil commented 7 years ago

Hey Klass, sorry for the delay in response. I'm glad you figured out the issue! You're right, we should indicate that the settings file is missing, I'll reopen this issue so we can track a fix for that.

PorkyProgs commented 6 years ago

Thanks for identifying the bug, as I am not so familiar with the Setup and untill the fix is included, could perhaps be clarified i) which file name should be entered into this Setting and ii) If the full path or a relative path should be included (and if relative, relative from where) That would be a great help to start using this part of teh extension

rjmholt commented 6 years ago

@tylerl0706, it looks like there's a bug in the extension where we're not persisting PSSA rule file settings, as above.

rkeithhill commented 6 years ago

@PorkyProgs

i) which file name should be entered into this Setting and

You can use any filename you want but the tyipcal filename is PSScriptAnalyzerSettings.psd1.

ii) If the full path or a relative path should be included (and if relative, relative from where)

When using a relative path in a workspace settings file, the path is relative to the workspace root. If you put the setting in your user profile, it should be an absolute path.

rkeithhill commented 6 years ago

@rjmholt I don't think this feature was designed to persist the set of selected rules between sessions. Another reason I prefer to use a PSSA settings file for the workspace.

bergmeister commented 6 years ago

I think it is a minimum viable feature (for the moment) to tell people having to just edit the PSSA setting file themselves but of course, it could be improved. But what is a no go and problem is the fact that when no PSSA settings path is specified, the rules selected via Ctrl+Shift+P are not persisted! I suggest that when selecting a rule AND the PSScriptAnalyzerSettingPath setting of VSCode is not set, then the extension should create such a file in the .vscode folder and make the Vscode setting point to it. Without this capability, the Vscode feature of selecting rules via Ctrl+Shift+P is useless and misleading. I myself saw this feature once and thought it would be nice to people who like to use GUIs, so I showed it at psconf.eu but not knowing that it does not persist because I personally use settings files...

I would also like to complain about the fact that not all rules are turned on by default, especially AvoidPossibleIncorrectComparisonWithNull.

mklement0 commented 5 years ago

Good points, @bergmeister.

There are both older and newer issues that are closely related:

823 (@daviwil) suggests adding support for persisting the existing GUI-based rules selection (>PowerShell: Select PSScriptAnalyzer Rules)

1443 (@rjmholt) doesn't reference the GUI method, but proposes supporting persistent rule selection via settings.json specifically

Also, there is another closely related issue that I decided to break out into a separate one: If you use a relative path in setting powershell.scriptAnalysis.settingsPath, for per-workspace settings, opening a workspace that doesn't have such a file quietly deactivates all rules - see #2287

Also related: #2190, where @TylerLeonhardt suggests automatically picking up a PSScriptAnalyzerSettings.psd1 file in the workspace root.