The analyzer has detected a loop whose termination conditions do not depend on the number of iterations. Such a loop can iterate 0, 1, or an infinite number of times.
Consider the following example of such a loop:
void Foo(int left, int right) { while(left < right) { Bar(); } }
The problem is with the while loop: the variables being checked in the condition do not change; therefore, the loop will either never terminate or never start.
Here is another example of code that would trigger this diagnostic. A loop may become infinite if you forget to rethrow an exception in the 'try-catch' block down the stack:
while (condition) { try { if(Foo()) { throw new Exception(); } } catch (Exception ex) { .... } }
To have this loop terminate on throwing the exception, you can, for example, rethrow this exception from the catch section using the throw statement:
while (condition) { try { if(Foo()) { throw new Exception(); } } catch (Exception ex) { .... throw; } }