PSScriptAnalyzer icon indicating copy to clipboard operation
PSScriptAnalyzer copied to clipboard

Rule request: Avoid using the Assignment by Addition Operator (`+=`) to build a string

Open iRon7 opened this issue 1 year ago • 1 comments

Summary of the new feature

Strings are immutable. Each addition to the string actually creates a new string big enough to hold the contents of both the left and right operands, then copies the elements of both operands into the new string. For small strings, this overhead may not matter. For large strings, this can affect performance and memory consumption. This will create more awareness of the possible performance impact of using the Assignment by Addition Operator (+= ), see also:

Proposed technical implementation details (optional)

See (PowerShell based) prototype AvoidPlusEqualsToBuildStrings at: https://github.com/iRon7/PSRules

What is the latest version of PSScriptAnalyzer at the point of writing

1.21.0

iRon7 avatar Aug 29 '23 10:08 iRon7

I've tried this a while ago, see https://github.com/PowerShell/PSScriptAnalyzer/pull/933 I'd say currently not possible because we cannot infer types and there are limitations of PowerShell internal classes that were forked in early days and even if we were to update them (which is very difficult as well because of the way the PowerShell code has moved on), it would likely not solve the problem either... I'd say to close as dupe of https://github.com/PowerShell/PSScriptAnalyzer/issues/806 and https://github.com/PowerShell/PSScriptAnalyzer/issues/904

bergmeister avatar Sep 17 '23 18:09 bergmeister