C and C++


LANG.STRUCT.SE.COND : 副作用を含む条件式

要旨

条件式がプログラムの状態を変更する可能性があります。

注:前置/後置インクリメント (++) もしくは 前置/後置デクリメント (--) が論理式の右辺に出現した場合にこのワーニングが検出されます。

See also Too Many Side Effects in Condition.

プロパティ

クラス名 Condition Contains Side Effects
日本語クラス名 副作用を含む条件式
クラス分類 スタイル (style)
ニーモニック LANG.STRUCT.SE.COND
カテゴリー
CWE CWE:710 Improper Adherence to Coding Standards
CERT-C CERT-C:EXP45-C Do not perform assignments in selection statements
JPL JPL:19 Do not use expressions with side effects.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Condition Contains Side Effects"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

int lang_struct_se_cond(int i, int *p){
    if (p && i-- > 0) {   /* 'Condition Contains Side Effects' warning issued here */
        return *p;
    }
    return i;
}

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

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