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

Данное диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

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

Пример, на который анализатор выдаст предупреждение: 

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

В следующем примере выход из цикла производится с помощью как 'break', так и '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:
    ...
}
```