Inspectopedia Help

Assignment to 'for' loop parameter

Reports assignment to, or modification of a for loop parameter inside the body of the loop.

Although occasionally intended, this construct may be confusing and is often the result of a typo or a wrong variable being used.

The quick-fix adds a declaration of a new variable.

Example:

for (String s : list) { // Warning: s is changed inside the loop s = s.trim(); System.out.println("String: " + s); }

After the quick-fix is applied:

for (String s : list) { String trimmed = s.trim(); System.out.println("String: " + trimmed); }

Assignments in basic for loops without an update statement are not reported. In such cases the assignment is probably intended and can't be easily moved to the update part of the for loop.

Example:

for (int i = 0; i < list.size(); ) { if (element.equals(list.get(i))) { list.remove(i); } else { // modification of for loop parameter is not reported // as there's no update statement i++; } }

Use the Check enhanced 'for' loop parameters option to specify whether modifications of enhanced for loop parameters should be also reported.

Inspection options

Option

Type

Default

Check enhanced 'for' loop parameters

Checkbox

true

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023