V621. Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.


Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что в операторе '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' инициализируется неправильным значением или здесь вообще должна быть использована другая переменная.

Согласно Common Weakness Enumeration, потенциальные ошибки, найденные с помощью этой диагностики, классифицируются как CWE-835.

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V621.


Найденные ошибки

Проверено проектов
346
Собрано ошибок
13 124

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;