C and C++


LANG.STRUCT.LOOP.NOTERM : Missing for-loop Termination

Summary

The second ("termination condition") clause of a for loop header is empty.

If all three clauses in the for loop header are empty, a Missing for-loop Termination warning will not be issued.

Properties

Class Name Missing for-loop Termination
Significance style
Mnemonic LANG.STRUCT.LOOP.NOTERM
Categories
MisraC2023 MisraC2023:14.2 A for loop shall be well-formed
Misra2012 Misra2012:14.2 A for loop shall be well-formed
Misra2004 Misra2004:13.5 The three expressions of a for statement shall be concerned only with loop control
  Misra2004:13.6 Numeric variables being used within a for loop for iteration counting shall not be modified in the body of the loop
MisraC++2023 MisraC++2023:9.5.1 Legacy for statements should be simple
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="Missing for-loop Termination"
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 lang_struct_loop_noterm(void){
    int j;
    int rv = 0;

    for ( ; ; ){ rv++; break; }                      /* specific exception */

    for (j = 0; j < 10; j++){ rv++; }                /* second clause is present */

    for (j = 0; ; j++){     /* 'Missing for-loop Termination' warning issued here */
        rv++;
        if (j > 0) break;
    }

    for (j = 0; ; ){        /* 'Missing for-loop Termination' warning issued here
                             * ('Missing for-loop Step' warning also issued when enabled)
                             */
        rv++;
        break;
    }  
    return rv;
}

Relevant Configuration File Parameters

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