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

The analyzer has detected that a function body contains a label with no 'goto' statement referring to it\. It might be the programmer's mistake, resulting in a jump to a wrong label somewhere in the code\.

Here's a synthetic example of incorrect code:

```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";
}
```

The function body contains the 'badRet' label, which no 'goto' statement refers to, while another label in this function, 'retRes', has an associated 'goto' statement\. The programmer made a mistake and duplicated the jump to the 'retRes' label instead of the 'badRet' label\.

The correct version of this code can look as follows:

```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";
}
```

Here's another example of this error:

```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;
}
```

For this code, the analyzer will output a low\-severity\-level warning as the 'badLbl' label is a leftover after some changes in the function, while all the 'goto' statements referring to it were deleted\.

The analyzer won't output the warning when the function body contains a 'goto' statement referring to the label in question, this statement being commented out or excluded through the '\#ifdef' directive\.