Точка с запятой в конце for/while и оператор или блок кода под
таким for -- типовая ошибка. И анализаторы умеют предупреждать,
даже по-моему gcc warning даёт. Раньше не давал и я помню тоже с
таким багом долго сражался и долго смеялся после. В хорошем
анализаторе код не просто проверяется буквально, согласно
формальной грамматике, но и проверяются возможные человеческие
ошибки такого рода. Например будет ругаться на неправильную
"индентацию", т.к. потенциально это значит где-то потерянные скобки и т.п.