# V6041. Suspicious assignment inside the conditional expression of 'if/while/do...while' statement.

Анализатор обнаружил ситуацию, когда в условии оператора 'if'/ 'while'/'do...while' присутствует оператор присваивания '='. Подобная конструкция часто свидетельствует о наличии ошибок. Высока вероятность, что вместо оператора '=' планировалось использовать оператор '=='.

Рассмотрим пример:

    void func(int x, boolean skip, ...)
    {
      if (skip = true) {
        return;
      }
      ...
      if ((x > 50) && (x < 150)) {
        ...
      }
      ...
    }

В коде допущена опечатка: вместо проверки переменной 'skip' на истинность происходит изменение значения переменной 'skip'. В итоге, из-за опечатки условие будет истинно, и всегда будет выполняться оператор 'return'. Корректный вариант кода:

    if (skip == true){
      return;
    }

или

    if (skip){
      return;
    }

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

CWE-481 CERT-EXP51-J