Enhance UseDeclaredVarsMoreThanAssignments to detect also take into account the usage of Get-Variable with an array of variables and usage of named parameter -Name by bergmeister · Pull Request #1310 · PowerShell/PSScriptAnalyzer
PR Summary
Fixes #1301 by enhancing the parsing of the Get-Variable AST to also check if an array is passed or if the -Name parameter is used as a named parameter (including cases where it is shortened to -n).
Also refactored logic into it's own static method for better readability and performance.
Since reverse engineering a CommandAst into the used parameters is quite complex, I am not going to further enhance it.
PR Checklist
- PR has a meaningful title
- Use the present tense and imperative mood when describing your changes
- [x Summarized changes
- Change is not breaking
- Make sure all
.cs,.ps1and.psm1files have the correct copyright header - Make sure you've added a new test if existing tests do not effectively test the code changed and/or updated documentation
- This PR is ready to merge and is not Work in Progress.
- If the PR is work in progress, please add the prefix
WIP:to the beginning of the title and remove the prefix when the PR is ready.
- If the PR is work in progress, please add the prefix
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes me think we should really invest in some general purpose AST functionality (like parameter parsing/binding tools) (but probably don't have the time currently).
Otherwise, LGTM
Yes, I agree something like a parameter binder helper would be nice but I think it would require the runtime and be no purely static just based on the AST. Maybe some of the parameter binder functionality in PowerShell could be exposed?