Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что в операторе 'for' используются странные начальное и конечное значения счетчика. Это может приводить к некорректному выполнению цикла и нарушению логики работы программы.
Рассмотрим пример:
signed char i; for (i = -10; i < 100; i--) { ... };
Возможно, произошла опечатка и перепутаны начальные и конечные значения. Так же ошибка может возникнуть, если перепутаны операторы '++' и '--'.
Корректный вариант кода:
for (i = -10; i < 100; i++) { ... };
Также корректным будет следующий код:
for (i = 100; i > -10; i--) { ... };
Рассмотрим код, найденный анализатором в реальном приложении:
void CertificateRequest::Build() { ... uint16 authCount = 0; for (int j = 0; j < authCount; j++) { int sz = REQUEST_HEADER + MIN_DIS_SIZE; ... } }
Переменная 'authCount' инициализируется неправильным значением или здесь вообще должна быть использована другая переменная.
Данная диагностика классифицируется как:
|
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V621. |