C and C++


LANG.STRUCT.BGOTO : Backwards goto

Summary

A goto statement refers to a label that appears before the statement.

This class is a strict subset of Goto Statement.

Properties

Class Name Backwards goto
Significance style
Mnemonic LANG.STRUCT.BGOTO
Categories
MisraC2023 MisraC2023:15.2 The goto statement shall jump to a label declared later in the same function
Misra2012 Misra2012:15.2 The goto statement shall jump to a label declared later in the same function
Misra2004 Misra2004:14.4 The goto statement shall not be used
AUTOSARC++14 AUTOSARC++14:M6-6-2 The goto statement shall jump to a label declared later in the same function body.
MisraC++2008 MisraC++2008:6-6-2 The goto statement shall jump to a label declared later in the same function body.
MisraC++2023 MisraC++2023:9.6.1 The goto statement should not be used
  MisraC++2023:9.6.3 The goto statement shall jump to a label declared later in the function body
JSF++ JSF++:189 The goto statement shall not be used.
Availability Available for C and C++.
Enabling Checks for this warning class are disabled by default, and require the unnormalized C ASTs for the project. To enable them, add the following WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Backwards goto"
Note that retaining the unnormalized ASTs will increase the disk space used to store the project representation, and may make the analysis take longer.

Example

int backwardsgoto(int i){
     int x=0;
 l1: x++;
     if (x >= i) goto l1;  /* 'Backwards Goto' warning issued here */
     return x;
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.