GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — PSReviewUnusedParameter: Add CommandsToTraverse option by FriedrichWeinmann · Pull Request #1921 · PowerShell/PSScriptAnalyzer

Conversation

@FriedrichWeinmann

@FriedrichWeinmann Friedrich Weinmann (FriedrichWeinmann) commented Jun 1, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

PR Summary

Proposed resolution of the issue of PSReviewUnusedParameter not traversing into scriptblocks of common commands such as Where-Object or ForEach-Object (#1472).

Implementation:

  • Added a new rule setting: traverseList (string[]). Scriptblocks provided as parameter to one of the listed commands will also be checked for variables.
  • Added Where-Object and ForEach-Object explicitly to the list of commands to traverse

Notes & Thoughts

This is currently not too refined, but works for what it does.
Does not address $using use in Invoke-Command or other edge cases (e.g. ForEach-Object -Parallel).

But it does solve the problem for the most common everyday usage and allows extensibility for people with custom needs (e.g. I'm going to explicitly include Invoke-PSFProtectedCommand).

Also does not cover special cases, such as calculated properties of Select-Object. Or scriptblocks stored in variables and later used as argument for commands that are whitelisted. Maybe more detailed configuration options needed for cases like that.

PR Checklist

  • PR has a meaningful title
    • Use the present tense and imperative mood when describing your changes
  • Summarized changes
  • Change is not breaking
  • Make sure all .cs, .ps1 and .psm1 files 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.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Daleyon reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
@FriedrichWeinmann
Added command traversal option
7dfcab1
Explicitly included Where-Object and ForEach-Object scriptblocks to also be searched for variable use
@FriedrichWeinmann Friedrich Weinmann (FriedrichWeinmann) mentioned this pull request Jun 1, 2023
ReviewUnusedParameter does not capture parameter usage within a scriptblock #1472
Open
JamesWTruher
James Truher (JamesWTruher) suggested changes Sep 11, 2023
View reviewed changes

@JamesWTruher James Truher (JamesWTruher) left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we're definitely going to need new validation for this behavior.
Please create tests for this.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

FriedrichWeinmann and bergmeister reacted with thumbs up emoji
All reactions
  • 👍 2 reactions
@bergmeister Christoph Bergmeister (bergmeister) added the not ready label Jan 2, 2024
@bergmeister

Christoph Bergmeister (bergmeister) commented Jan 2, 2024

Copy link
Copy Markdown
Collaborator

Friedrich Weinmann (@FriedrichWeinmann) We plan to release later this month so if you could add some tests, we could potentially merge and ship this in time?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Friedrich Weinmann (FriedrichWeinmann) added 2 commits January 3, 2024 12:34
@FriedrichWeinmann
Command traversal check no longer case sensitive
a68ba4f
@FriedrichWeinmann
Extended tests for selective command traversal
e6fc757
@FriedrichWeinmann

Friedrich Weinmann (FriedrichWeinmann) commented Jan 3, 2024

Copy link
Copy Markdown
Contributor Author

Sorry about the delay, added tests

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

bergmeister
Christoph Bergmeister (bergmeister) requested changes Feb 1, 2024
View reviewed changes

@bergmeister Christoph Bergmeister (bergmeister) left a comment

Copy link
Copy Markdown
Collaborator

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Friedrich Weinmann (@FriedrichWeinmann) Thanks for adding tests, whilst reviewing I just noticed that we need to document this new option.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread Rules/ReviewUnusedParameter.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Friedrich Weinmann (FriedrichWeinmann) added 2 commits February 5, 2024 14:45
@FriedrichWeinmann
Rename setting to CommandsToTraverse
12f1c65
@FriedrichWeinmann
Added docs for new configuration: CommandsToTraverse
81b8179
@bergmeister Christoph Bergmeister (bergmeister) changed the title PSReviewUnusedParameter: Added command traversal option PSReviewUnusedParameter: Add CommandsToTraverse option Feb 6, 2024
bergmeister
Christoph Bergmeister (bergmeister) approved these changes Feb 6, 2024
View reviewed changes

@bergmeister Christoph Bergmeister (bergmeister) left a comment

Copy link
Copy Markdown
Collaborator

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM now.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bergmeister
Christoph Bergmeister (bergmeister) enabled auto-merge (squash) February 12, 2024 18:10
JamesWTruher
James Truher (JamesWTruher) approved these changes Feb 13, 2024
View reviewed changes

@JamesWTruher James Truher (JamesWTruher) left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks great - thanks for adding the tests

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bergmeister
Christoph Bergmeister (bergmeister) merged commit c06e005 into PowerShell:master Feb 13, 2024
This was referenced Mar 16, 2024
Update PSScriptAnalyzer to v1.22.0 ForNeVeR/intellij-powershell-fork#1
Closed
Update PSScriptAnalyzer to v1.22.0 intellij-powershell/intellij-powershell#244
Merged
Update PowerShellEditorServices to v3.18.1 and PSScriptAnalyzer to v1.22.0 ForNeVeR/intellij-powershell-fork#2
Closed
Benedek Farkas (BenedekFarkas) added a commit to Lombiq/PowerShell-Analyzers that referenced this pull request May 15, 2024
@BenedekFarkas
Removing a PSReviewUnusedParameter suppression that doesn't seem nece…
c90848c
…ssary anymore

Related: PowerShell/PSScriptAnalyzer#1921
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@bergmeister Christoph Bergmeister (bergmeister) bergmeister approved these changes
+1 more reviewer
@JamesWTruher James Truher (JamesWTruher) JamesWTruher approved these changes
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

not ready

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@FriedrichWeinmann @bergmeister @JamesWTruher
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.