Open daprahamian opened 4 months ago
I would name it UseCompatibleEscapeSequences
as it specifically concerns the use of compatible escape sequences
Thanks... would want to make sure this came with great test coverage 😄
Specifically for the escape character (`e
):
$([char]0x1b)
is a nice suggestion for the auto correction (-fix
), yet my recommendation for a (documented) more idiomatic (and presumably more efficient) compatible correction would be to define a new (common) $Esc
variable also knowing that in most cases this doesn't require any Subexpression operator $( )
as it is usually followed by a special character:
$Esc = $([char]0x1b)
"This is $Esc[7mInverse$Esc[27m text."
The same might apply to any specific unicode escape sequences (although less common):
$Smiley = $([char]0x263a)
"Please $Smiley, I am taking a picture"
@iRon7 I'm not sure I agree that we should be defining a new variable.
There's a minutia of complexities with doing so. Not least of all:
What do you call the variable so that it doesn't clash or shadow an existing one?
Where do you define the variable?
With PowerShell's dynamic scopes, lexical analysis would be insufficient to find a suitable name or place. Though perhaps I'm over-thinking it? 🤔
I've made a first stab at the MVP of this and learned a fair bit.
As Sydney says, much testing is going to be needed; There are many edge cases.
Summary of the new feature
The
`e
and`u{xxxx}
special characters in double-quoted strings were added in Powershell 6. It would be nice to have a compatibility rule that detects these escape characters when writing for Powershell <6 and suggests a different syntax (ex. suggesting$([char]0x1b)
for`e
)What is the latest version of PSScriptAnalyzer at the point of writing v1.22