Main Content

MISRA C++:2008 Rule 6-6-4

For any iteration statement there shall be no more than one break or goto statement used for loop termination

Description

Rule Definition

For any iteration statement there shall be no more than one break or goto statement used for loop termination.

Rationale

Using multiple break or goto statements within an iteration statement increases the complexity of the code. For good structured programming, use a single break or goto statement.

Polyspace Implementation

Polyspace® raises this defect when multiple break statements, goto statements, or a combination of these statements are present in a single loop.

Troubleshooting

If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

#include<iostream>
void foo(int x, int y)
{
	for (x = 0; x <= y; x++)
	{
		if (x == y)
		{
			// do this
			break;		//Compliant
		}
		else if (x > y)
		{
			goto error;	  //Noncompliant
		}
		else
		{
			//do this
		}
	}

error:
	std::cout << "Error message" << std::endl;
}

Because the if statement contains a break and a goto statement, Polyspace flags the statement as noncompliant. In this scenario, Polyspace labels the first break or goto statement as compliant. Polyspace flags all subsequent break or goto statements as noncompliant.

Check Information

Group: Statements
Category: Required

Version History

Introduced in R2013b