Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Подводные камни регулярных выражений: катастрофический возврат, ReDoS-атаки и выявление уязвимостей - 30.04

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V607. Ownerless expression 'Foo'.

07 Июн 2012

Анализатор обнаружил в коде потенциально бессмысленное выражение. Обычно такие конструкции возникают, когда результаты работы переменных, вызовов методов, операторов и т. д. нигде не используются. Такие ситуации могут быть следствием неаккуратного рефакторинга кода.

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

void Run(int &a, int b, int c, bool X)
{
  if (X)
    a = b + c;
  else
    b - c;
}

Из-за опечатки текст программы не закончен. Код компилируется, но не имеет практического смысла.

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

void Run(int &a, int b, int c, bool X)
{
  if (X)
    a = b + c;
  else
    a = b - c;
}

Рассмотрим другой пример:

typedef struct data_format {
   int day;
   int month;
};

В данном фрагменте ключевое слово typedef использовано некорректно, поскольку для объявляемого типа не задано имя псевдонима, из-за чего оно не выполняет своей основной функции и является избыточным.

Правильный вариант:

typedef struct data_format {
   int day;
   int month;
} data_format_t; //< = Добавили название для typedef

Существуют исключения, когда анализатор не станет срабатывать на избыточные конструкции, например, при намеренном подавлении предупреждения компилятора о неиспользуемых переменных:

void Foo(int a, int b)
{
  a, b;
}

Здесь анализатор не выдаст предупреждение V607.

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

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