﻿# V607\. Ownerless expression 'Foo'\.

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

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

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

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

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

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

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

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

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

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

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

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

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

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