## Why is this an issue?

`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.

### Noncompliant code example

    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

### Compliant solution

    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

### Exceptions

No issue is reported when `StringBuilder` is:

- Accessed through `sb.CopyTo()`, `sb.GetChunks()`, `sb.Length`, or `sb(index)`.
- Passed as a method argument, on the grounds that it will likely be accessed through a `ToString()` invocation there.
- Passed in as a parameter to the current method, on the grounds that the callee will materialize the string.
- Retrieved by a custom function (`Dim sb As StringBuilder = GetStringBuilder()`).
- Returned by the method.