Inspectopedia Help

Idempotent loop body

Reports loops whose second and all subsequent iterations do not produce any additional side effects other than the one produced by the first iteration, which can indicate a programming error.

Such loops may iterate only zero, one, or infinite number of times. If the infinite number of times case is unreachable, such a loop can be replaced with an if statement. Otherwise, there's a possibility that the program can get stuck.

Example:

public void foo(String baseName, String names) { int suffix = 1; String name = baseName; while (names.contains(name)) { // error: suffix is not updated making loop body idempotent name = baseName + suffix; } }

New in 2018.1

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023