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.