Credence.Rule.NoManualStringReverse (credence v0.2.0)

Copy Markdown

Readability & performance rule: Detects the pattern String.graphemes(s) |> Enum.reverse() |> Enum.join() which is a manual reimplementation of String.reverse/1.

String.reverse/1 handles Unicode grapheme clusters correctly and avoids creating an intermediate list, making it both clearer and faster.

Bad

reversed = str |> String.graphemes() |> Enum.reverse() |> Enum.join()

Good

reversed = String.reverse(str)