﻿# V2530\. MISRA\. Any loop should be terminated with no more than one 'break' or 'goto' statement\.

This diagnostic rule is based on the software development guidelines developed by [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\)\.

The limitation of the number of loop exit points allows significantly reducing visual complexity of the code\.

Here's an example which triggers this warning:

```cpp
int V2534_pos_1(vector<int> ivec)
{
  int sum = 0;
  for (auto i = ivec.cbegin(); i != ivec.cend(); ++i)
  {
    if (*i < 0)
      break;

    sum += *i;

    if (sum > 42)
      break;
  }

  return sum;
}
```

In the following example, the loop is exited via both 'break', and 'goto':

```cpp
short V2534_pos_2(string str)
{
  short count = 0;
  for (auto &c : str)
  {
    if (isalnum(c))
    {
      count++;
    }
    else if (isspace(c))
    {
      break;
    }
    else
    {
      goto error;
    }
  }
  
  return count;

error:
    ...
}
```