CERT C および C チェッカーリファレンス

コンピューター緊急対応チーム (CERT) が定義しているセキュアコーディング基準にマッピングされる Community C/C++ チェッカーのリスト。

チェッカー名 説明 重要度のデフォルト値 デフォルトで有効になりましたか? バージョン
CERT.ALIGNOF '__alignof__' の使用は言語拡張である 4 False (偽) 2024.3
CERT.ANONYMOUS.STRUCT 無名構造体オブジェクトの定義は言語拡張である 4 False (偽) 2024.3
CERT.ANONYMOUS.UNION 無名共用体オブジェクトの定義は言語拡張である 4 False (偽) 2024.3
CERT.ARRAY.LENGTH.ZERO 長さゼロの配列は言語拡張である 4 False (偽) 2024.3
CERT.BITFIELD.NOT.INT 'int' 型として定義されていないビットフィールドは言語拡張である 4 False (偽) 2024.3
CERT.BITFIELD.SIGN.MODIFIER 符号付きまたは符号なしとして定義されていないビットフィールドは実装定義である 4 False (偽) 2024.3
CERT.CHROOT chroot 関数の使用 4 False (偽) 2024.3
CERT.CHROOT.CHDIR 'chroot' 関数の呼び出しの後に 'chdir' 関数の呼び出しがない 4 False (偽) 2024.3
CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP ループで疑似的に失敗する可能性のある関数はラップしてください 4 False (偽) 2021.2
CERT.CONC.LIB_FUNC_USE ライブラリ関数の使用時には競合状態を避けてください 4 False (偽) 2021.2
CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED ロックされている間はミューテックスを破棄しないでください 4 False (偽) 2024.1
CERT.CONC.UNSAFE_COND_VAR 条件変数の使用時に、スレッドセーフと活性を維持します 4 False (偽) 2024.1
CERT.CONC.UNSAFE_COND_VAR_C 条件変数の使用時に、スレッドセーフと活性を維持します 4 False (偽) 2024.1
CERT.CONC.WAKE_IN_LOOP 擬似的にループを起動する可能性のあるラップ関数 4 False (偽) 2024.1
CERT.CONC.WAKE_IN_LOOP_C 擬似的にループを起動する可能性のあるラップ関数 4 False (偽) 2024.1
CERT.DCL.AMBIGUOUS_DECL 構文的に曖昧な宣言を作成しないでください 4 False (偽) 2024.1
CERT.DCL.REF_TYPE.CONST_OR_VOLATILE 参照型を const または volatile で修飾しないでください 4 False (偽) 2024.1
CERT.DCL.SAME_SCOPE_ALLOC_DEALLOC 同一のスコープ内のペアとしての割り当ておよび割り当て解除関数をオーバーロードします 4 False (偽) 2024.1
CERT.DCL.STD_NS_MODIFIED 標準名前空間を変更しないでください 4 False (偽) 2024.1
CERT.DCL.SWITCH.VAR_BEFORE_CASE switch ステートメント内では最初の case ラベルより前で変数を宣言しないでください 4 False (偽) 2021.2
CERT.EMPTY.AGR.INIT 空の集約型初期化子は言語拡張である 4 False (偽) 2024.3
CERT.ENUM.LITERAL.TYPE.INT 列挙リテラル定数が int 型ではない 4 False (偽) 2024.3
CERT.ENUM.TYPE.SPECIFIER 非標準の拡張列挙型指定子は言語拡張である 4 False (偽) 2024.3
CERT.ERR.ABRUPT_TERM 突然プログラムを終了しないでください 4 False (偽) 2020.1
CERT.ERR.CONV.STR_TO_NUM 文字列を数値に変換する際にエラーを検出する 4 False (偽) 2020.1
CERT.EXPR.DELETE_ARR.BASE_PTR 不正な型のポインターを使用して配列を削除しないでください 4 False (偽) 2020.1
CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE 不完全な型へのポインターを削除しないでください 4 False (偽) 2020.1
CERT.EXPR.PASS_NON_STD_LAYOUT 実行境界を超えて標準ではないレイアウトタイプオブジェクトを渡さないでください 4 False (偽) 2024.1
CERT.EXPR.VOLATILE.ADDR 非 volatile ポインタを通して volatile オブジェクトにアクセスしてはいけません 4 False (偽) 2020.1
CERT.EXPR.VOLATILE.ADDR.PARAM 非 volatile ポインタを介して volatile オブジェクトを関数に渡さないでください 4 False (偽) 2020.1
CERT.EXPR.VOLATILE.PTRPTR 非 volatile ポインタへの参照を volatile ポインタのポインタに割り当てないでください 4 False (偽) 2020.1
CERT.FIXED.MEMORY.ADDRESS '@ address' の使用は言語拡張である 4 False (偽) 2024.3
CERT.LITERAL.ARRAY シンボリック定数を使用してリテラル配列サイズ値を表す 4 False (偽) 2024.3
CERT.LITERAL.BINARY バイナリ定数の使用は言語拡張である 4 False (偽) 2024.3
CERT.LITERAL.BITFIELD シンボリック定数を使用してリテラルビットフィールド値を表す 4 False (偽) 2024.3
CERT.LITERAL.CHAR.CONST シンボリック定数を使用してリテラル文字値を表す 4 False (偽) 2024.3
CERT.LITERAL.FLT.CONST シンボリック定数を使用してリテラル浮動小数点値を表す 4 False (偽) 2024.3
CERT.LITERAL.INT.CONST シンボリック定数を使用してリテラル整数値を表す 4 False (偽) 2024.3
CERT.LITERAL.MULTIBYTE.CHAR マルチバイト文字定数の割り当ては実装定義である 4 False (偽) 2024.3
CERT.LITERAL.OCTAL 8 進定数の使用は言語拡張である 4 False (偽) 2024.3
CERT.LITERAL.STR.CONST シンボリック定数を使用してリテラル文字列値を表す 4 False (偽) 2024.3
CERT.LITERAL.SUFFIX.I64 整数定数の接尾辞として I64 または UI64 を使用することは言語拡張である 4 False (偽) 2024.3
CERT.MEM.OVERRIDE.DELETE 'delete' の動的メモリ管理要件を変更してください 4 False (偽) 2024.1
CERT.MEM.OVERRIDE.NEW 'new' の動的メモリ管理要件を変更してください 4 False (偽) 2024.1
CERT.MSC.ASCTIME asctime() 関数に無効なデータを渡さないでください 4 False (偽) 2021.2
CERT.MSC.NORETURN_FUNC_RETURNS [[noreturn]] と宣言された関数から返さないでください 4 False (偽) 2020.1
CERT.MSC.SEED_RANDOM 疑似乱数ジェネレータを適切にシードする 4 False (偽) 2021.2
CERT.MSC.SIG_HANDLER.POF シグナルハンドラーは古いプレーン関数である必要があります 4 False (偽) 2020.1
CERT.MSC.STD_RAND_CALL 疑似乱数の生成に std::rand() を使用しないでください 4 False (偽) 2020.1
CERT.MULTI.FUNC.ARG.CALLS 副次式の評価の順序や、副作用が発生する順序には依存しない 4 False (偽) 2024.3
CERT.NAME.DOLLAR.CHAR オブジェクト名に文字 '$' を使用することは、ISO C では有効な識別子ではない 4 False (偽) 2024.3
CERT.OOP.COPY_MUTATES コピー操作でソースオブジェクトを変更してはいけません 4 False (偽) 2024.1
CERT.OOP.CSTD_FUNC_USE C 標準ライブラリ関数よりも特殊メンバー関数とオーバーロードされた演算子を優先します 4 False (偽) 2020.1
CERT.OOP.CTOR.INIT_ORDER コンストラクターメンバー初期化子を正規の順序で作成します 4 False (偽) 2024.1
CERT.OOP.PTR_MEMBER.NO_MEMBER メンバー演算子へのポインターを使用して、存在しないメンバーにアクセスしないでください 4 False (偽) 2024.1
CERT.POS.THREAD.ASYNC_CANCEL 非同期キャンセルが可能なスレッドを使用してはいけません 3 False (偽) 2020.1
CERT.RTN.FLT.CAST.DBL 浮動小数点型を返す関数の戻り値をキャストする 4 False (偽) 2024.3
CERT.RTN.FLT.IMPLICIT.CAST.DBL 浮動小数点型を返す関数の戻り値をキャストする 4 False (偽) 2024.3
CERT.STATIC.SINGLE.USE ファイルスコープの静的変数は 1 つの関数でのみアクセスされる 4 False (偽) 2024.3
CERT.STMT.EXPR ステートメント式の使用は言語拡張である 4 False (偽) 2024.3
CERT.STR.ARG.CONST_TO_NONCONST const char ポインターを非 const char ポインター引数に渡さないでください 4 False (偽) 2022.3
CERT.STR.ASSIGN.CONST_TO_NONCONST const char ポインターを非 const char ポインターに割り当てないでください 4 False (偽) 2022.3
CERT.STR.RANGE.FORMATTER 文字列範囲フォーマッタの使用は実装定義である 4 False (偽) 2024.3
CERT.STRUCT.FLEXIBLE_ARRAY_MEMBER フレキシブル配列メンバーの宣言時には正しい構文を使用する 4 False (偽) 2021.2
CERT.TU.UNUSED.GLOBAL.DECL グローバル識別子は宣言されているが、この変換ユニットでは使用されない 4 False (偽) 2024.3
CERT.TYPEOF '__typeof__' の使用は言語拡張である 4 False (偽) 2024.3
CERT.UNNAMED.MEMBER 構造体または共用体における無名メンバーの定義は言語拡張である 4 False (偽) 2024.3