Skip to content
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

PSAvoidAssignmentToAutomaticVariable: Ignore when a Parameter has an Attribute that contains a Variable expression #1988

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

liamjpeters
Copy link
Contributor

@liamjpeters liamjpeters commented Mar 27, 2024

PR Summary

The rule PSAvoidAssignmentToAutomaticVariable alerts when no assignment has taken place.

It does so when $true or $false is used within the ValidateSet attribute of a parameter. Only the automatic variables $true and $false are permitted here - all other read-only automatic variables are a ParseError.

Currently:

param(
  [ValidateSet($true, $false)]
  $MyVar
)

Is flagged by PSAvoidAssignmentToAutomaticVariable.

The Variable 'true' cannot be assigned since it is a readonly automatic variable that is built into PowerShell, please use a different name.

Interestingly when a ValidateSet is used in this way outside of a param block - it does not get flagged.


This PR adds a check for variable expressions found within parameters which are the child of an Attribute, and skips them. Similarly to skipping over the variable expressions that are children of NamedAttributeArguments, which is already present.

This does not prevent the bodies of scriptblocks, within attributes, from being checked. So for instance the below is still flagged by PSAvoidAssignmentToAutomaticVariable.

Invoke-ScriptAnalyzer -ScriptDefinition 'param([ValidateScript({$true = $_})] $MyVar)' -ExcludeRule 'PSReviewUnusedParameter'

Resolves #1970

PR Checklist

…tribute that contains a Variable expression, such as '[ValidateSet($True,$False)]'.
Copy link
Collaborator

@bergmeister bergmeister left a comment

Choose a reason for hiding this comment

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

Thanks, looks good to me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

PSAvoidAssignmentToAutomaticVariable Errors on validateset
2 participants