Анализатор обнаружил цикл, условия выхода которого не зависят от количества итераций. Такой цикл может выполнится 0, 1, либо бесконечное количество раз.
Пример такого цикла:
void Foo(int left, int right) { while(left < right) { Bar(); } }
Ошибка здесь в цикле while - переменные, которые находятся в условии, никак не меняют своих значений, поэтому цикл никогда не завершится, либо никогда не запустится.
Рассмотрим другой пример кода, на который сработает данная диагностика. Цикл может стать бесконечным, если в блоке 'try-catch' забыть перебросить исключение дальше по стеку:
while (condition) { try { if(Foo()) { throw new Exception(); } } catch (Exception ex) { .... } }
Чтобы такой цикл прервался выбросом исключения, можно, например, перебросить это исключение из catch секции с помощью выражения throw:
while (condition) { try { if(Foo()) { throw new Exception(); } } catch (Exception ex) { .... throw; } }