C and C++


LANG.STRUCT.LOOP.NOTERM : forループ終了条件節の欠如

要旨

for ループヘッダの2番目の終了条件節が空です。

3つ全てのfor ループヘッダ節が空の場合、このワーニングは検出されません。

プロパティ

クラス名 Missing for-loop Termination
日本語クラス名 forループ終了条件節の欠如
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.LOOP.NOTERM
カテゴリー
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
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Missing for-loop Termination"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

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

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。