StringBuilder instances that never build a string clutter the code and worse are a drag on performance. Either they
should be removed, or the missing ToString() call should be added.
Public Sub DoSomething(ByVal strings As List(Of String))
Dim sb As StringBuilder = New StringBuilder() ' Noncompliant
sb.Append("Got: ")
For Each str As String In strings
sb.Append(str).Append(", ")
Next
End Sub
Public Sub DoSomething(ByVal strings As List(Of String))
For Each str As String In strings
Next
End Sub
or
Public Sub DoSomething(ByVal strings As List(Of String))
Dim sb As StringBuilder = New StringBuilder()
sb.Append("Got: ")
For Each str As String In strings
sb.Append(str).Append(", ")
Next
My.Application.Log.WriteEntry(sb.ToString())
End Sub
No issue is reported when StringBuilder is:
sb.CopyTo(), sb.GetChunks(), sb.Length, or sb(index). ToString() invocation there. Dim sb As StringBuilder = GetStringBuilder()).