# V679. The 'X' variable was not initialized. This variable is passed by reference to the 'Foo' function in which its value will be used.

Анализатор обнаружил ситуацию, когда неинициализированная переменная передаётся в функцию по ссылке или по указателю. При этом функция читает значение из этой неинициализированной переменной.

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

    void Copy(int &x, int &y)
    {
      x = y;
    }
    void Foo()
    {
      int x, y;
      x = 1;
      Copy(x, y);
    }

Это конечно очень простой придуманный пример. Однако он хорошо показывает суть ошибки. Переменная 'y' является неинициализированной. Ссылка на эту переменную передаётся в функцию Copy(). Там происходит чтение из этой неинициализированной переменной.

Корректный код, может выглядеть так:

    void Copy(int &x, int &y)
    {
      x = y;
    }
    void Foo()
    {
      int x, y;
      y = 1;
      Copy(x, y);
    }

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки использования неинициализированных переменных.

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

CWE-457 CERT-EXP33-C CERT-EXP53-CPP