﻿# V729\. Function body contains the 'X' label that is not used by any 'goto' statements\.

Анализатор обнаружил в теле функции метку, на которую не ссылается ни один оператор 'goto'\. Возможно, программист ошибся и использует где\-то переход не на ту метку\.

Синтетический пример некорректного кода:

```cpp
string SomeFunc(const string &fStr)
{
  string str;
  while(true)
  {
    getline(cin,str); 
    if (str == fStr)
      goto retRes;
    else if(str == "stop")
      goto retRes;
  }
retRes:
  return str;
badRet:
  return "fail";
}
```

В теле функции есть метка 'badRet' на которую не ссылается ни один оператор 'goto', но при этом присутствует другая метка 'retRes', на которую есть ссылка\. Программист ошибся и вместо перехода на метку 'badRet' продублировал переход на метку 'retRes'\.

Тогда корректный код мог бы выглядеть так:

```cpp
string SomeFunc(const string &fStr)
{
  string str;
  while(true)
  {
    getline(cin,str); 
    if (str == fStr)
      goto retRes;
    else if(str == "stop")
      goto badRet;
  }
retRes:
  return str;
badRet:
  return "fail";
}
```

Другой пример некорректного кода:

```cpp
int DeprecatedFunc(size_t lhs, size_t rhs, bool cond)
{
  if (cond)
    return lhs*3+rhs;
  else
    return lhs*2 + rhs*7;
badLbl:
  return -1;
}
```

В данном случае будет выдано сообщение с низким уровнем опасности, так как метка 'badLbl' осталась после изменения функции, а операторы 'goto', ссылающиеся на неё, были удалены\.

Анализатор не будет выдавать предупреждение в случае, если в теле функции есть оператор 'goto', ссылающийся на данную метку, но он закомментирован или этот участок кода не компилируется из\-за директивы '\#ifdef'\.