C and C++


LANG.STRUCT.LOOP.MFSTEP : 正しく記述されていないforループステップ節

要旨

for ループヘッダの3番目のステップ節が以下の条件に該当します。

プロパティ

クラス名 Malformed for-loop Step
日本語クラス名 正しく記述されていないforループステップ節
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.LOOP.MFSTEP
カテゴリー
MisraC2023 MisraC2023:14.2 A for loop shall be well-formed
Misra2012 Misra2012:14.2 A for loop shall be well-formed
AUTOSARC++14 AUTOSARC++14:A6-5-4 For-init-statement and expression should not perform actions other than loop-counter initialization and modification.
  AUTOSARC++14:M6-5-4 The loop-counter shall be modified by one of: --, ++, - = n, or + = n; where n remains constant for the duration of the loop.
  AUTOSARC++14:M6-5-5 A loop-control-variable other than the loop-counter shall not be modified within condition or expression.
MisraC++2008 MisraC++2008:6-5-4 The loop-counter shall be modified by one of -- , ++ , -=n , or +=n; where n remains constant for the duration of the loop.
  MisraC++2008:6-5-5 A loop-control-variable other than the loop-counter shall not be modified within condition or expression.
MisraC++2023 MisraC++2023:9.5.1 Legacy for statements should be simple
JSF++ JSF++:199 The increment expression in a for loop will perform no action other than to change a single loop parameter to the next value for the loop.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Malformed for-loop Step"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

void lang_struct_loop_mfstep(void){
    int i=1;
    int k;
    int buf[10];


    for (k = 0; k < 10; k +=i){                /* k incremented, no other side effects */
      buf[i] = k; 
    }

    i = 0;
    for (k = 0; k < 10; k += i){ /* 'Malformed for-loop Step' warning issued here
                                  * - i modifed in loop body */
        buf[i++] = k; 
    }

    for (k = 0; k < 10; k = i++){/* 'Malformed for-loop Step' warning issued here
                                  * - side effect on i */
        /* ... */
    }

    for (k = 0; k < 10; i++){    /* 'Malformed for-loop Step' warning issued here
                                  * - side effect on i */
      /* ... */
    }

}

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

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