C and C++


LANG.STRUCT.LOOP.NOSTEP : forループステップ節の欠如

要旨

for ループヘッダの3番目のステップ節が空です。

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

プロパティ

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

void g(void){return;}

int lang_struct_loop_nostep(void){
    int i;
    int rv=0;

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

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

    for (i = 0; i < 10; g()){ i++; rv++; }            /* third clause is present */

    for (i = 0; i < 10; ){ i++; rv++; } /* 'Missing for-loop Step' warning issued here */

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

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

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