The analyzer detected a potential error: a nested loop is arranged by a variable which is also used in an outer loop.
In a schematic form, this error looks in the following way:
int i = 0, j = 0; for (i = 0; i < 5; i++) for (i = 0; i < 5; i++) A[i][j] = 0;
Of course, this is an artificial sample, so we may easily see the error, but in a real application, the error might be not so apparent. This is the correct code:
int i = 0, j = 0; for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) A[i][j] = 0;
Using one variable both for the outer and inner loops is not always a mistake. Consider a sample of correct code the analyzer won't generate the warning for:
for(c = lb; c <= ub; c++) { if (!(xlb <= xlat(c) && xlat(c) <= ub)) { Range r = new Range(xlb, xlb + 1); for (c = lb + 1; c <= ub; c++) r = DoUnion(r, new Range(xlat(c), xlat(c) + 1)); return r; } }
In this code, the inner loop "for (c = lb + 1; c <= ub; c++)" is arranged by the "c" variable. The outer loop also uses the "c" variable. But there is no error here. After the inner loop is executed, the "return r;" operator will perform exit from the function.
This diagnostic is classified as: