◐ Shell
clean mode source ↗

Use AST to determine SupportsShouldProcess when an error is thrown by rjmholt · Pull Request #1397 · PowerShell/PSScriptAnalyzer

@rjmholt

PR Summary

Fixes #1217.

When PowerShell throws an error due to not being able to resolve an attribute type, we sift through the AST to determine whether SupportsShouldProcess has been set on a function.

Also cleans up some of the logic so it's not all nested ass.

PR Checklist

bergmeister

@bergmeister

Code change looks ok but the build says it has a problem when targeting psv3, looks like we need a pragma using the PSV3 variable

UseShouldProcessCorrectly.cs(382,99): error CS1061: 'ExpressionAst' does not contain a definition for 'SafeGetValue' and no accessible extension method 'SafeGetValue' accepting a first argument of type 'ExpressionAst' could be found (are you missing a using directive or an assembly reference?)
Co-Authored-By: Christoph Bergmeister [MVP] <c.bergmeister@gmail.com>

@rjmholt

Ok I've repurposed the SafeGetValue substitute method I wrote to handle that. It's now available as a Helper method.

bergmeister

Choose a reason for hiding this comment

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

Looks good to me. I verified that the diff in Helper.cs/Settings.cs is mainly just the move to make the method publicly accessible.
Only an optional style suggestion.

Co-Authored-By: Christoph Bergmeister [MVP] <c.bergmeister@gmail.com>
Co-Authored-By: Christoph Bergmeister [MVP] <c.bergmeister@gmail.com>