# V573. Use of uninitialized variable 'Foo'. The variable was used to initialize itself.

Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что объявляемая переменная для инициализации использует саму себя.

Рассмотрим простой синтетический пример:

    int X = X + 1;

Переменная X будет инициализирована случайным значениям. Конечно, этот пример надуман, но зато он прост и хорошо демонстрирует смысл предупреждения. На практике подобная ошибка может встречаться в более сложных выражениях. Рассмотрим пример:

    void Class::Foo(const std::string &FileName)
    {
      if (FileName.empty())
        return;
      std::string FullName = m_Dir + std::string("\\") + FullName;
      ...
    }

Из-за опечатки в выражении случайно используется имя FullName, а не FileName. Корректный вариант кода:

    std::string FullName = m_Dir + std::string("\\") + FileName;

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

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

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

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