Open
Description
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
Activity
iRon7 commentedon Jul 25, 2024
I would name it
UseCompatibleEscapeSequences
as it specifically concerns the use of compatible escape sequencesSydneyhSmith commentedon Jul 30, 2024
Thanks... would want to make sure this came with great test coverage 😄
iRon7 commentedon Aug 2, 2024
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:The same might apply to any specific unicode escape sequences (although less common):
liamjpeters commentedon Aug 8, 2024
@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.