# V6080. Consider checking for misprints. It's possible that an assigned variable should be checked in the next condition.

Анализатор обнаружил ситуацию, когда проверка переменной может быть пропущена в следующем 'if' после присваивания или инициализации.

К примеру, ошибочным можно считать такой код:

    int ret = foo(....);
    if (ret != -1) { .... }
    ....
    int ret2 = bar(....);
    if (ret != -1) { .... }    // <=

Часто бывают случаи, когда надо проверить возвращаемое значение какой-либо функции. Однако, можно допустить ошибку, указав другую переменную внутри условия 'if'. Чаще всего подобная ошибка возникает, когда фрагмент кода копируется, но в нём забывают заменить имя переменной в условии. В рассмотренном примере в условии забыли заменить имя 'ret' на 'ret2'.

Исправленный вариант:

    int ret2 = bar(....);
    if (ret2 != -1) { .... }

Или же можно допустить ошибку в таком случае:

    this.data = calculate(data, ....);
    if (data != -1) ....;

Переменная и поле имеют одинаковые имена, из-за чего их легко перепутать.

Диагностика является эвристической. Во время своей работы она сравнивает имена переменных и на основании этого делает предположения о наличии опечатки. Также производится базовая проверка типов для уменьшения количества ложных срабатываний.

Данная диагностика классифицируется как:

CWE-697

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