Open nascentt opened 4 months ago
This is a strange one.
Ultimately ValidateSet
only accepts a string array of valid values, so I guess it's going to cast $True
and $False
to string
and be left with 'True'
and 'False'
.
That's why, in the terminal, when I use the parameter completion that ValidateSet
facilitates, I get the string options (not $true
or $false
):
But accepting the suggestions, the function errors:
New-SlackMessage: Cannot process argument transformation on parameter 'UnfurlLinks'. Cannot convert value "System.String" to type "System.Boolean". Boolean parameters accept only Boolean values and numbers, such as $True, $False, 1 or 0.
Which makes me think the function needs some work if it's using ValidateSet
to ensure that a declared Boolean
value is either true or false 🤔.
That all said, you're correct and it's not assignment. The rule is probably checking all parameters for any variable expressions and alerting if a reserved name is used.
I'll take a look at this.
This is a strange one.
Ultimately
ValidateSet
only accepts a string array of valid values, so I guess it's going to cast$True
and$False
tostring
and be left with'True'
and'False'
.That's why, in the terminal, when I use the parameter completion that
ValidateSet
facilitates, I get the string options (not$true
or$false
):
But accepting the suggestions, the function errors:
New-SlackMessage: Cannot process argument transformation on parameter 'UnfurlLinks'. Cannot convert value "System.String" to type "System.Boolean". Boolean parameters accept only Boolean values and numbers, such as $True, $False, 1 or 0.
Which makes me think the function needs some work if it's using
ValidateSet
to ensure that a declaredBoolean
value is either true or false 🤔.That all said, you're correct and it's not assignment. The rule is probably checking all parameters for any variable expressions and alerting if a reserved name is used.
I'll take a look at this.
it's not that $true
and $false
are being converted to a string. It's that they are constants from powershell's perspective, so they don't cause a parsing error. For example, if you use $HOME
, you wouldn't get past the parsing stage since $HOME
is not a constant from PowerShell's perspective. There are a very small set of variables which PowerShell considers constant.
This attribute is really looking for a set of constant strings
Thanks for the explanation @JamesWTruher. Makes sense!
Thanks for raising this and opening PR, will review
I have been getting errors on validateset because PSScriptAnalyzer is confusing the validateset as assignment.
An example of this happening is
from https://github.com/RamblingCookieMonster/PSSlack/blob/master/PSSlack/Public/New-SlackMessage.ps1