Klocwork および Klocwork community チェッカーにマッピングされた CERT C++ 規則

以下の表では、コンピューター緊急対応チーム (CERT) が定義しているセキュアコーディング基準にマッピングされた、Klocwork および Klocwork community C++ チェッカーをリストしています。

ガイドライン チェッカー名および説明
ARR37-C

CERT.ARR.PTR.ARITH   演算式にポインターが使用されています

ARR39-C

CERT.ARR.PTR.ARITH   演算式にポインターが使用されています

CON02-CPP

CONC.DL   デッドロック

CON33-C

CERT.CONC.LIB_FUNC_USE   ライブラリ関数の使用時には競合状態を避けてください

CON37-C

MISRA.STDLIB.SIGNAL   signal.h の信号処理装置の使用

CON40-C

CERT.CONC.ATOMIC_TWICE_EXPR   1 つの式でアトミック変数を 2 回参照しないでください

CON41-C

CERT.CONC.ATOMIC_COMP_FAIL_IN_LOOP   ループで疑似的に失敗する可能性のある関数はラップしてください

CON50-CPP

CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED   ロックされている間はミューテックスを破棄しないでください

CON54-CPP

CERT.CONC.WAKE_IN_LOOP   擬似的にループを起動する可能性のあるラップ関数

CON55-CPP

CERT.CONC.UNSAFE_COND_VAR   条件変数の使用時に、スレッドセーフと活性を維持します

CTR01-CPP

CWARN.MEMSET.SIZEOF.PTR   ポインタに適用される 'sizeof' には、memset のような関数が呼び出されます

INCORRECT.ALLOC_SIZE   不適切な割り当てサイズ

CTR50-CPP

ABV.ANY_SIZE_ARRAY   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.STACK   バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.TAINTED   未検証の入力によるバッファオーバーフロー

SV.TAINTED.ALLOC_SIZE   メモリ割り当て時の未検証の整数の使用

SV.TAINTED.CALL.INDEX_ACCESS   関数呼び出し時の配列インデックスとしての未検証の整数の使用

SV.TAINTED.CALL.LOOP_BOUND   関数呼び出しのループ条件での未検証の整数の使用

SV.TAINTED.INDEX_ACCESS   配列インデックスとしての未検証の整数の使用

CTR51-CPP

ITER.CONTAINER.MODIFIED   無効な反復子の使用

DCL01-CPP

MISRA.VAR.HIDDEN   内部のスコープで宣言された識別子によって外部のスコープの識別子が非表示になっています

DCL07-CPP

MISRA.VAR.MIN.VIS   名前の可視性が高すぎます

DCL10-CPP

MISRA.BIN_OP.OVERLOAD   カンマ、|| または && 演算子が多重定義されています

MISRA.UN_OP.OVERLOAD   単項の & 演算子が多重定義されています

DCL12-CPP

MISRA.SPEC.ILL   テンプレートの明示的なインスタンス化により、コードの形式が損なわれます

DCL19-CPP

UNINIT.CTOR.MIGHT   コンストラクタにおける未初期化の変数の可能性

UNINIT.CTOR.MUST   コンストラクタにおける未初期化の変数

UNINIT.HEAP.MIGHT   未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST   未初期化のヒープの使用

UNINIT.STACK.ARRAY.MIGHT   未初期化の配列の可能性

UNINIT.STACK.ARRAY.MUST   未初期化の配列

UNINIT.STACK.ARRAY.PARTIAL.MUST   一部が未初期化の配列

UNINIT.STACK.MIGHT   未初期化の変数の可能性

UNINIT.STACK.MUST   未初期化の変数

DCL50-CPP

MISRA.FUNC.VARARG   関数が可変数の引数を持っています

DCL51-CPP

MISRA.DEFINE.WRONGNAME   標準ライブラリからの名前がマクロ名に使用されています

MISRA.DEFINE.WRONGNAME.UNDERSCORE   予約名がマクロ名に使用されています

MISRA.STDLIB.WRONGNAME   標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています

MISRA.STDLIB.WRONGNAME.UNDERSCORE   予約名が言語エンティティの名前に使用されています

MISRA.UNDEF.WRONGNAME   標準ライブラリからの名前が定義されていません

MISRA.UNDEF.WRONGNAME.UNDERSCORE   予約名が定義されていません

DCL52-CPP

CERT.DCL.REF_TYPE.CONST_OR_VOLATILE   参照型を const または volatile で修飾しないでください

DCL53-CPP

CERT.DCL.AMBIGUOUS_DECL   構文的に曖昧な宣言を作成しないでください

DCL54-CPP

CERT.DCL.SAME_SCOPE_ALLOC_DEALLOC   同一のスコープ内のペアとしての割り当ておよび割り当て解除関数をオーバーロードします

DCL57-CPP

MISRA.DTOR.THROW   デストラクタにスローします

DCL58-CPP

CERT.DCL.STD_NS_MODIFIED   標準名前空間を変更しないでください

DCL59-CPP

MISRA.NAMESPACE.UNMD   ヘッダーファイルに名前のない名前空間があります

ENV02-CPP

MISRA.STDLIB.ABORT   ライブラリ stdlib.h から 'abort'、'exit'、'getenv' または 'system' が使用されています

SV.CODE_INJECTION.SHELL_EXEC   シェル実行へのコマンドインジェクション

SV.TAINTED.INJECTION   コマンドインジェクション

ENV30-C

CXX.STDLIB.ILLEGAL_WRITE   標準ライブラリ関数 localeconv、getenv、setlocale、または strerror が返すポインターは、必ずそれらが const-qualified 型を指すポインターを持つかのように使用する必要があります。

ENV32-C

CERT.EXIT.HANDLER_TERMINATE   すべての exit ハンドラーは正常に戻る必要があります

ENV33-C

SV.CODE_INJECTION.SHELL_EXEC   シェル実行へのコマンドインジェクション

ENV34-C

CXX.STDLIB.ILLEGAL_REUSE   標準ライブラリ関数 asctime または同様の関数によって返されるポインタは、同じ関数の後続の呼び出しに続いては使用しません

ERR01-CPP

MISRA.STDLIB.ERRNO   エラーインジケーター 'errno' が使用されています

ERR08-CPP

MISRA.THROW.PTR   例外オブジェクトがポインタになっています

ERR09-CPP

MISRA.CATCH.BY_VALUE   クラス タイプの例外オブジェクトが値によってキャッチされています

MISRA.THROW.PTR   例外オブジェクトがポインタになっています

ERR10-CPP

NPD.FUNC.MUST   NULL を返す可能性がある関数の戻り値が逆参照されます

SV.RVT.RETVAL_NOTTESTED   戻り値の無視

ERR33-C

NPD.CHECK.MUST   ポインタを明示的に NULL チェックした後に逆参照します

NPD.FUNC.MUST   NULL を返す可能性がある関数の戻り値が逆参照されます

SV.RVT.RETVAL_NOTTESTED   戻り値の無視

ERR50-CPP

CERT.ERR.ABRUPT_TERM   突然プログラムを終了しないでください

MISRA.TERMINATE   terminate() 関数が明示的に呼び出されています

ERR51-CPP

MISRA.CATCH.ALL   try-catch ブロックに省略記号例外ハンドラーがありません

ERR52-CPP

MISRA.STDLIB.LONGJMP   setjmp マクロまたは longjmp 関数の使用

ERR53-CPP

MISRA.CTOR.TRY.NON_STATIC   コンストラクタまたはデストラクタの関数 try-catch ブロックが非スタティックなメンバーを参照しています

ERR54-CPP

MISRA.CATCH.NOALL   省略記号例外ハンドラーが try-catch ブロックの最後に置かれていません

MISRA.CATCH.WRONGORD   try-catch ブロックで基本例外クラスのハンドラーが派生例外クラスのハンドラーよりも先に置かれています

ERR57-CPP

CL.MLK   メモリリーク - デストラクタで発生

MLK.MIGHT   メモリリークの可能性

MLK.MUST   メモリリーク

MLK.RET.MIGHT   メモリリークの可能性

MLK.RET.MUST   メモリリーク

RH.LEAK   リソースリーク

ERR61-CPP

MISRA.CATCH.BY_VALUE   クラス タイプの例外オブジェクトが値によってキャッチされています

ERR62-CPP

CERT.ERR.CONV.STR_TO_NUM   文字列を数値に変換する際にエラーを検出する

EXP00-CPP

CERT.EXPR.PARENS   式内の演算子の優先度は明示的にする必要があります。

MISRA.EXPR.PARENS.INSUFFICIENT   式の演算子優先規則に制限された依存性が必要です

MISRA.EXPR.PARENS.REDUNDANT   式の演算子優先規則に制限された依存性が必要です

EXP01-CPP

CWARN.MEMSET.SIZEOF.PTR   ポインタに適用される 'sizeof' には、memset のような関数が呼び出されます

INCORRECT.ALLOC_SIZE   不適切な割り当てサイズ

EXP05-CPP

BSTR.CAST.C   C スタイルの型が BSTR にキャストされます

MISRA.C_CAST   非 void タイプへの C スタイルのキャストです

EXP06-CPP

MISRA.SIZEOF.SIDE_EFFECT   sizeof のオペランドに副作用があります

EXP08-CPP

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

ABV.ITERATOR   バッファオーバーフロー - 配列インデックスが範囲外の可能性

MISRA.PTR.ARITH   代数式または配列インデックス式でポインタが使用されています

EXP09-CPP

INCORRECT.ALLOC_SIZE   不適切な割り当てサイズ

EXP10-CPP

PORTING.VAR.EFFECTS   ある使用法が副次的な影響を受ける式で変数が 2 回使用されています

EXP11-CPP

PORTING.BITFIELDS   構造内でのビットフィールドの使用法

PORTING.CAST.FLTPNT   非浮動小数点タイプへの浮動小数点式のキャスト

PORTING.CAST.PTR   両方ともポインタでない型といずれかがポインタでない型間のキャスト

PORTING.CAST.PTR.FLTPNT   非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト

PORTING.CAST.PTR.SIZE   サイズに互換性がない可能性がある型への式のキャストの可能性

PORTING.CAST.SIZE   サイズが異なる可能性がある型に式がキャストされています

EXP12-CPP

MISRA.FUNC.UNUSEDRET   非 void 関数の戻り値が使用されていません

SV.RVT.RETVAL_NOTTESTED   戻り値の無視

EXP15-CPP

MISRA.CAST.UNSIGNED_BITS   unsigned char または short でのビット演算の結果は元の型にキャストできません

EXP34-CPP

NPD.CHECK.CALL.MIGHT   ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります

NPD.CHECK.CALL.MUST   ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します

NPD.CHECK.MIGHT   ポインタを明示的に NULL チェックした後に逆参照する可能性があります

NPD.CHECK.MUST   ポインタを明示的に NULL チェックした後に逆参照します

NPD.CONST.CALL   逆参照する可能性のある関数に NULL を渡しています

NPD.CONST.DEREF   NULL は逆参照されます

NPD.FUNC.CALL.MIGHT   NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります

NPD.FUNC.CALL.MUST   NULL を返す関数の戻り値が、これを逆参照する可能性がある別の関数に渡されます

NPD.FUNC.MIGHT   NULL を返す可能性のある関数の戻り値が逆参照される場合があります

NPD.FUNC.MUST   NULL を返す可能性がある関数の戻り値が逆参照されます

NPD.GEN.CALL.MIGHT   NULLポインタを逆参照する可能性がある関数に渡す場合があります

NPD.GEN.CALL.MUST   NULLポインタを逆参照する関数に渡します

NPD.GEN.MIGHT   NULLポインタを逆参照する可能性があります

NPD.GEN.MUST   NULLポインタを逆参照します

RNPD.CALL   NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります

RNPD.DEREF   NULL チェック前のポインタの逆参照は問題となる可能性があります

EXP39-C

CXX.CAST.OBJ_PTR_TO_OBJ_PTR   オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト

EXP42-C

CERT.MEMCMP.PADDED_DATA   パディングデータを比較しないでください

EXP47-C

CERT.VA_ARG.TYPE   正しくない型の引数で va_arg を呼び出さない

EXP50-CPP

CERT.EXPR.PARENS   式内の演算子の優先度は明示的にする必要があります。

MISRA.EXPR.PARENS.INSUFFICIENT   式の演算子優先規則に制限された依存性が必要です

MISRA.INCR_DECR.OTHER   増分または減分の演算子がその他の演算子と混合して式で使用されています

PORTING.VAR.EFFECTS   ある使用法が副次的な影響を受ける式で変数が 2 回使用されています

EXP51-CPP

CERT.EXPR.DELETE_ARR.BASE_PTR   不正な型のポインターを使用して配列を削除しないでください

EXP52-CPP

MISRA.SIZEOF.SIDE_EFFECT   sizeof のオペランドに副作用があります

EXP53-CPP

UNINIT.CTOR.MIGHT   コンストラクタにおける未初期化の変数の可能性

UNINIT.CTOR.MUST   コンストラクタにおける未初期化の変数

UNINIT.HEAP.MIGHT   未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST   未初期化のヒープの使用

UNINIT.STACK.ARRAY.MIGHT   未初期化の配列の可能性

UNINIT.STACK.ARRAY.MUST   未初期化の配列

UNINIT.STACK.ARRAY.PARTIAL.MUST   一部が未初期化の配列

UNINIT.STACK.MIGHT   未初期化の変数の可能性

UNINIT.STACK.MUST   未初期化の変数

EXP54-CPP

CL.FFM.ASSIGN   解放済みメモリの使用 (二重解放) - operator= が無いため

CL.FFM.COPY   解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため

LOCRET.ARG   関数がローカル変数のアドレスを返しています

LOCRET.GLOB   関数がローカル変数のアドレスを返しています

LOCRET.RET   関数がローカル変数のアドレスを返しています

UFM.DEREF.MIGHT   解放済みメモリの逆参照の可能性

UFM.DEREF.MUST   解放済みメモリの逆参照

UFM.FFM.MIGHT   解放済みメモリの使用 (二重解放)の可能性

UFM.FFM.MUST   解放済みメモリの解放

UFM.RETURN.MIGHT   解放済みメモリの戻り値への使用の可能性

UFM.RETURN.MUST   解放済みメモリの戻り値への使用

UFM.USE.MIGHT   解放済みメモリの使用の可能性

UFM.USE.MUST   解放済みメモリの使用

UNINIT.HEAP.MIGHT   未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST   未初期化のヒープの使用

UNINIT.STACK.ARRAY.MIGHT   未初期化の配列の可能性

UNINIT.STACK.ARRAY.MUST   未初期化の配列

UNINIT.STACK.ARRAY.PARTIAL.MUST   一部が未初期化の配列

UNINIT.STACK.MIGHT   未初期化の変数の可能性

UNINIT.STACK.MUST   未初期化の変数

EXP55-CPP

MISRA.CAST.CONST   キャスト演算により const または volatile がポインターまたは参照から除外されます。

EXP56-CPP

MISRA.CAST.PTR.UNRELATED   ポインタ型のオブジェクトを関連のない型にキャストしています

MISRA.CAST.PTR_TO_INT   ポインタと整数型間のキャスト

PORTING.CAST.PTR   両方ともポインタでない型といずれかがポインタでない型間のキャスト

PORTING.CAST.PTR.FLTPNT   非浮動小数点型のポインタへの浮動小数点式のポインタのキャスト

PORTING.CAST.PTR.SIZE   サイズに互換性がない可能性がある型への式のキャストの可能性

PORTING.CAST.SIZE   サイズが異なる可能性がある型に式がキャストされています

EXP57-CPP

CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE   不完全な型へのポインターを削除しないでください

EXP58-CPP

CERT.VA_START.TYPE   正しい型のオブジェクトを va_start に渡す

EXP60-CPP

CERT.EXPR.PASS_NON_STD_LAYOUT   実行境界を超えて標準ではないレイアウトタイプオブジェクトを渡さないでください

EXP61-CPP

LOCRET.RET   関数がローカル変数のアドレスを返しています

EXP62-CPP

CERT.MEMCMP.PADDED_DATA   パディングデータを比較しないでください

CWARN.MEM.NONPOD   非 POD オブジェクトに適用されるメモリ操作ルーチン

FIO00-CPP

SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD   互換性がない print 関数パラメーターの型

SV.FMT_STR.PRINT_FORMAT_MISMATCH.UNDESIRED   予期しない print 関数パラメーターの型

SV.FMT_STR.PRINT_IMPROP_LENGTH   print 関数呼び出しの長さ修飾子の不適切な使用

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW   print 関数呼び出しの引数が少なすぎます

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY   print 関数呼び出しの引数が多すぎます

SV.FMT_STR.UNKWN_FORMAT   print 関数呼び出しの書式指定子が不明です

FIO01-CPP

SV.TOCTOU.FILE_ACCESS   ファイル アクセス時の作成日時/使用日時の競合状態

FIO02-CPP

SV.DLLPRELOAD.NONABSOLUTE.DLL   DLL プリロードのハイジャック ベクターの可能性

SV.TOCTOU.FILE_ACCESS   ファイル アクセス時の作成日時/使用日時の競合状態

FIO04-CPP

MISRA.FUNC.UNUSEDRET   非 void 関数の戻り値が使用されていません

SV.RVT.RETVAL_NOTTESTED   戻り値の無視

FIO17-CPP

MISRA.INCL.UNSAFE   安全でないヘッダーのインクルード

MISRA.STDLIB.STDIO   プロダクションコードで入力/出力ライブラリ stdio.h が使用されています

FIO30-C

SV.FMTSTR.GENERIC   書式文字列の脆弱性

SV.TAINTED.FMTSTR   書式文字列での未検証データの使用

FIO34-C

CWARN.CMPCHR.EOF   'char' 式と EOF 定数との比較

FIO38-C

CERT.FILE_PTR.DEREF   FILE オブジェクトへのポインターは逆参照してはなりません

CERT.FILE_PTR.DEREF.CAST   オブジェクトは FILE ポインターにキャストされており、これを逆参照してはなりません。

CERT.FILE_PTR.DEREF.INDIRECT   FILE オブジェクトへのポインターは、システム関数で間接的に逆参照してはなりません

CERT.FILE_PTR.DEREF.RETURN   FILE オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません

MISRA.FILE_PTR.DEREF.2012   FILE オブジェクトへのポインターは逆参照してはなりません

MISRA.FILE_PTR.DEREF.CAST.2012   オブジェクトは FILE ポインターにキャストされており、これを逆参照してはなりません。

MISRA.FILE_PTR.DEREF.INDIRECT.2012   FILE オブジェクトへのポインターは、システム関数で間接的に逆参照してはなりません

MISRA.FILE_PTR.DEREF.RETURN.2012   FILE オブジェクト(関数の戻り値)へのポインターは逆参照してはなりません

FIO39-C

CERT.FIO.NO_FLUSH   フラッシュまたは位置調整の関数呼び出しの欠如

FIO42-C

RH.LEAK   リソースリーク

FIO44-C

CERT.FSETPOS.VALUE   fsetpos() に、fgetpos() から返される値のみを使用します

FIO45-C

SV.TOCTOU.FILE_ACCESS   ファイル アクセス時の作成日時/使用日時の競合状態

FIO46-C

SV.INCORRECT_RESOURCE_HANDLING.URH   安全でないリソース処理

FIO47-C

SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD   互換性がない print 関数パラメーターの型

SV.FMT_STR.PRINT_FORMAT_MISMATCH.UNDESIRED   予期しない print 関数パラメーターの型

SV.FMT_STR.PRINT_IMPROP_LENGTH   print 関数呼び出しの長さ修飾子の不適切な使用

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW   print 関数呼び出しの引数が少なすぎます

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY   print 関数呼び出しの引数が多すぎます

SV.FMT_STR.SCAN_FORMAT_MISMATCH.BAD   互換性がない scan 関数パラメーターの型

SV.FMT_STR.SCAN_FORMAT_MISMATCH.UNDESIRED   予期しない scan 関数パラメーターの型

SV.FMT_STR.SCAN_IMPROP_LENGTH   scan 関数呼び出しの長さ修飾子の不適切な使用

SV.FMT_STR.SCAN_PARAMS_WRONGNUM.FEW   scan 関数呼び出しの引数が少なすぎます

SV.FMT_STR.SCAN_PARAMS_WRONGNUM.MANY   scan 関数呼び出しの引数が多すぎます

SV.FMT_STR.UNKWN_FORMAT   print 関数呼び出しの書式指定子が不明です

FIO51-CPP

RH.LEAK   リソースリーク

FLP30-C

MISRA.FOR.COUNTER.FLT   for ループのカウンターが浮動小数点タイプです

FLP34-C

MISRA.CAST.FLOAT.WIDER   より広い浮動小数点タイプへの浮動小数点式のキャスト

MISRA.CAST.FLOAT_INT   整数型への浮動小数点式のキャスト

MISRA.CAST.INT_FLOAT   浮動小数点タイプへの複合式のキャスト

MISRA.CONV.FLOAT   暗黙的な浮動小数点変換です

FLP36-C

PORTING.CAST.FLTPNT   非浮動小数点タイプへの浮動小数点式のキャスト

FLP37-C

CERT.MEMCMP.FLOAT_MEMBER   メンバーが浮動小数点の場合、比較しないでください

INT02-CPP

MISRA.CAST.INT   自明ではない整数式が広い型または別の符号を持つ型にキャストされています

MISRA.CAST.UNSIGNED_BITS   unsigned char または short でのビット演算の結果は元の型にキャストできません

MISRA.CONV.INT.SIGN   暗黙的な整数変換により符号が変わります

MISRA.CVALUE.IMPL.CAST   暗黙の型変換で符号、型サイズ、型の違いにより情報の損失を起こす記述があります。

MISRA.UMINUS.UNSIGNED   単項マイナス演算子が符号なしオペランドに対して使用されています。

PRECISION.LOSS   精度の損失

INT04-CPP

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

INCORRECT.ALLOC_SIZE   不適切な割り当てサイズ

NNTS.TAINTED   未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

SV.STRBO.UNBOUND_COPY   バインドされていない文字列コピーでのバッファオーバーフロー

SV.STRBO.UNBOUND_SPRINTF   バインドされていない sprintf でのバッファオーバーフロー

INT05-CPP

SV.BANNED.RECOMMENDED.SCANF   禁止が推奨されているAPI: 安全でない scanf 型関数

SV.TAINTED.ALLOC_SIZE   メモリ割り当て時の未検証の整数の使用

SV.TAINTED.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.INDEX_ACCESS   関数呼び出し時の配列インデックスとしての未検証の整数の使用

SV.TAINTED.CALL.LOOP_BOUND   関数呼び出しのループ条件での未検証の整数の使用

SV.TAINTED.INDEX_ACCESS   配列インデックスとしての未検証の整数の使用

SV.TAINTED.LOOP_BOUND   ループ条件での未検証の整数の使用

INT06-CPP

MISRA.STDLIB.ATOI   ライブラリ stdlib.h から 'atof'、'atoi' または 'atol' が使用されています

SV.BANNED.RECOMMENDED.SCANF   禁止が推奨されているAPI: 安全でない scanf 型関数

INT07-CPP

MISRA.CHAR.NOT_CHARACTER   文字でない値に 'char' が使用されています

MISRA.SIGNED_CHAR.NOT_NUMERIC   数値でない値に 'signed char' または 'unsigned char' が使用されています

PORTING.UNSIGNEDCHAR.OVERFLOW.FALSE   'char' 型の符号によっては関係式が常に false になる場合があります

INT11-CPP

PORTING.CAST.PTR   両方ともポインタでない型といずれかがポインタでない型間のキャスト

INT12-CPP

MISRA.BITFIELD.TYPE   ビットフィールドのタイプは、符号付き/符号なし整数のいずれでもありません

INT13-CPP

MISRA.BITS.NOT_UNSIGNED   ビット演算のオペランドが符号なし整数ではありません

MISRA.BITS.NOT_UNSIGNED.PREP   ビット演算のオペランドが符号なし整数ではありません

INT32-C

CWARN.NOEFFECT.OUTOFRANGE   範囲外の値

NUM.OVERFLOW   オーバーフローの可能性

NUM.OVERFLOW.DF   起こり得る数値のオーバーフローまたはラップアラウンド

INT34-C

MISRA.SHIFT.RANGE.2012   シフト演算子の右側のオペランドは範囲外です - 左側のオペランドの基本タイプのサイズ以上か、または負

MEM00-CPP

UFM.DEREF.MIGHT   解放済みメモリの逆参照の可能性

UFM.DEREF.MUST   解放済みメモリの逆参照

UFM.FFM.MIGHT   解放済みメモリの使用 (二重解放)の可能性

UFM.FFM.MUST   解放済みメモリの解放

UFM.RETURN.MIGHT   解放済みメモリの戻り値への使用の可能性

UFM.RETURN.MUST   解放済みメモリの戻り値への使用

UFM.USE.MIGHT   解放済みメモリの使用の可能性

UFM.USE.MUST   解放済みメモリの使用

MEM01-CPP

UFM.DEREF.MIGHT   解放済みメモリの逆参照の可能性

UFM.DEREF.MUST   解放済みメモリの逆参照

UFM.FFM.MIGHT   解放済みメモリの使用 (二重解放)の可能性

UFM.FFM.MUST   解放済みメモリの解放

UFM.RETURN.MIGHT   解放済みメモリの戻り値への使用の可能性

UFM.RETURN.MUST   解放済みメモリの戻り値への使用

UFM.USE.MIGHT   解放済みメモリの使用の可能性

UFM.USE.MUST   解放済みメモリの使用

MEM05-CPP

MISRA.FUNC.RECUR   再帰関数

SV.TAINTED.ALLOC_SIZE   メモリ割り当て時の未検証の整数の使用

MEM09-CPP

NNTS.MIGHT   バッファオーバーフロー - 非 NULL 終了文字列

NNTS.MUST   バッファオーバーフロー - 非 NULL 終了文字列

UNINIT.HEAP.MIGHT   未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST   未初期化のヒープの使用

MEM50-CPP

UFM.DEREF.MIGHT   解放済みメモリの逆参照の可能性

UFM.DEREF.MUST   解放済みメモリの逆参照

UFM.FFM.MIGHT   解放済みメモリの使用 (二重解放)の可能性

UFM.FFM.MUST   解放済みメモリの解放

UFM.RETURN.MIGHT   解放済みメモリの戻り値への使用の可能性

UFM.RETURN.MUST   解放済みメモリの戻り値への使用

UFM.USE.MIGHT   解放済みメモリの使用の可能性

UFM.USE.MUST   解放済みメモリの使用

MEM51-CPP

CL.FFM.ASSIGN   解放済みメモリの使用 (二重解放) - operator= が無いため

CL.FFM.COPY   解放済みメモリの使用 (二重解放) - コピーコンストラクタが無いため

CL.FMM   メモリの解放の不一致 - デストラクタで発生

CL.SHALLOW.ASSIGN   解放済みメモリの使用 (二重解放) - 演算子 = での浅いコピー

CL.SHALLOW.COPY   解放済みメモリの使用 (二重解放) - コピーコンストラクタでの浅いコピー

FMM.MIGHT   メモリの解放の不一致の可能性

FMM.MUST   メモリの解放の不一致

FNH.MIGHT   非ヒープメモリの解放の可能性

FNH.MUST   非ヒープメモリの解放

FUM.GEN.MIGHT   未割り当てメモリの解放の可能性

FUM.GEN.MUST   未割り当てメモリの解放

UNINIT.CTOR.MIGHT   コンストラクタにおける未初期化の変数の可能性

UNINIT.CTOR.MUST   コンストラクタにおける未初期化の変数

UNINIT.HEAP.MIGHT   未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST   未初期化のヒープの使用

MEM52-CPP

NPD.CHECK.CALL.MIGHT   ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります

NPD.CHECK.CALL.MUST   ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します

NPD.CHECK.MIGHT   ポインタを明示的に NULL チェックした後に逆参照する可能性があります

NPD.CHECK.MUST   ポインタを明示的に NULL チェックした後に逆参照します

NPD.CONST.CALL   逆参照する可能性のある関数に NULL を渡しています

NPD.CONST.DEREF   NULL は逆参照されます

NPD.FUNC.CALL.MIGHT   NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります

NPD.FUNC.CALL.MUST   NULL を返す関数の戻り値が、これを逆参照する可能性がある別の関数に渡されます

NPD.FUNC.MIGHT   NULL を返す可能性のある関数の戻り値が逆参照される場合があります

NPD.FUNC.MUST   NULL を返す可能性がある関数の戻り値が逆参照されます

NPD.GEN.CALL.MIGHT   NULLポインタを逆参照する可能性がある関数に渡す場合があります

NPD.GEN.CALL.MUST   NULLポインタを逆参照する関数に渡します

NPD.GEN.MIGHT   NULLポインタを逆参照する可能性があります

NPD.GEN.MUST   NULLポインタを逆参照します

RNPD.CALL   NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります

RNPD.DEREF   NULL チェック前のポインタの逆参照は問題となる可能性があります

MEM55-CPP

CERT.MEM.OVERRIDE.DELETE   'delete' の動的メモリ管理要件を変更してください

CERT.MEM.OVERRIDE.NEW   'new' の動的メモリ管理要件を変更してください

MSC01-CPP

CWARN.EMPTY.LABEL   ラベルステートメントが空です

LA_UNUSED   ラベルが使用されていません

MISRA.IF.NO_ELSE   if/else-if ステートメントのチェインが else で終了していないか、または空の else 句で終了しています

MISRA.SWITCH.NODEFAULT   switch ステートメントの最後に default 句がありません

MSC02-CPP

ASSIGCOND.CALL   割り当て条件 (呼び出し)

ASSIGCOND.GEN   割り当て条件

EFFECT   ステートメントの影響はありません

MISRA.FUNC.ADDR   & 演算子なしで関数のアドレスが使用されています

MSC03-CPP

EFFECT   ステートメントの影響はありません

SEMICOL   セミコロンの位置を確認してください

MSC04-CPP

MISRA.TOKEN.BADCOM   コメントに不適切な文字列があります

MSC07-CPP

LA_UNUSED   ラベルが使用されていません

UNREACH.ENUM   enum が取りうる値が原因で、コードは到達不能になっています

UNREACH.GEN   到達不能コード

UNREACH.RETURN   到達不能な void return文

UNREACH.SIZEOF   アーキテクチャに関連した到達不能コード

VA_UNUSED.GEN   値を割り当て後に使用しません

VA_UNUSED.INIT   値を初期化後に使用しません

MSC08-CPP

ABV.TAINTED   未検証の入力によるバッファオーバーフロー

SV.TAINTED.ALLOC_SIZE   メモリ割り当て時の未検証の整数の使用

SV.TAINTED.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.BINOP   バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.INDEX_ACCESS   関数呼び出し時の配列インデックスとしての未検証の整数の使用

SV.TAINTED.CALL.LOOP_BOUND   関数呼び出しのループ条件での未検証の整数の使用

SV.TAINTED.INDEX_ACCESS   配列インデックスとしての未検証の整数の使用

MSC12-CPP

CWARN.NOEFFECT.SELF_ASSIGN   変数は自身に割り当てられます

CWARN.NOEFFECT.UCMP.GE   符号なし値と 0 との比較は、常に true になります

CWARN.NOEFFECT.UCMP.GE.MACRO   マクロ内で符号なし値と 0 との比較は、常に true になります

CWARN.NOEFFECT.UCMP.LT   符号なし値と 0 との比較は、常に false になります

CWARN.NOEFFECT.UCMP.LT.MACRO   マクロ内で符号なし値と 0 との比較は、常に false になります

CWARN.NULLCHECK.FUNCNAME   関数アドレスが 0 と直接比較されます

EFFECT   ステートメントの影響はありません

MISRA.STMT.NO_EFFECT   そのステートメントは副作用がなく、制御フローを変更しません

UNREACH.ENUM   enum が取りうる値が原因で、コードは到達不能になっています

UNREACH.GEN   到達不能コード

UNREACH.RETURN   到達不能な void return文

UNREACH.SIZEOF   アーキテクチャに関連した到達不能コード

MSC13-CPP

LV_UNUSED.GEN   ローカル変数は使用されません

VA_UNUSED.GEN   値を割り当て後に使用しません

VA_UNUSED.INIT   値を初期化後に使用しません

MSC18-CPP

MISRA.SWITCH.NO_BREAK   switch 句の最後に break ステートメントまたは throw ステートメントがありません

MISRA.SWITCH.WELL_FORMED.BREAK.2012   条件なしの break ステートメントで各 switch 句を終了するべきです。

MSC20-CPP

MISRA.SWITCH.LABEL   switch のラベルが switch ボディ内の入れ子複合ステートメント内に置かれています

MISRA.SWITCH.WELL_FORMED.BREAK.2012   条件なしの break ステートメントで各 switch 句を終了するべきです。

MSC21-CPP

MISRA.FOR.COND.EQ   ループカウンターに対して++ 演算子または -- 演算子を使用していませんが、ループカウンターがイコールかどうかで判定しています

MSC30-C

CERT.MSC.STD_RAND_CALL   疑似乱数の生成に std::rand() を使用しないでください

MSC32-C

CERT.MSC.SEED_RANDOM   疑似乱数ジェネレータを適切にシードする

MSC33-C

CERT.MSC.ASCTIME   asctime() 関数に無効なデータを渡さないでください

MSC37-C

FUNCRET.GEN   非 void 関数に戻り値がありません

FUNCRET.IMPLICIT   暗黙的に int を返す非 void 関数に戻り値がありません

MSC39-C

VA.LIST.INDETERMINATE   不定値を持つ va_list に対する va_arg() の呼び出し

MSC41-C

CXX.SV.PWD.PLAIN   プレーンな文字列を使用してパスワードを設定しようとしています

CXX.SV.PWD.PLAIN.LENGTH   15 文字未満の長さでパスワードを設定しようとしています

CXX.SV.PWD.PLAIN.LENGTH.ZERO   ゼロ文字の長さでパスワードを設定しようとしています

HCC   ハードコードされた資格情報の使用

HCC.PWD   ハードコードされたパスワードの使用

HCC.USER   ハードコードされたユーザー名の使用

MSC50-CPP

CERT.MSC.STD_RAND_CALL   疑似乱数の生成に std::rand() を使用しないでください

MSC51-CPP

AUTOSAR.STDLIB.RANDOM.NBR_GEN_DEFAULT_INIT   乱数エンジンをデフォルトで初期化してはなりません

MSC52-CPP

FUNCRET.GEN   非 void 関数に戻り値がありません

FUNCRET.IMPLICIT   暗黙的に int を返す非 void 関数に戻り値がありません

MSC53-CPP

CERT.MSC.NORETURN_FUNC_RETURNS   [[noreturn]] と宣言された関数から返さないでください

MSC54-CPP

CERT.MSC.SIG_HANDLER.POF   シグナルハンドラーは古いプレーン関数である必要があります

OOP50-CPP

CERT.OOP.CTOR.VIRTUAL_FUNC   コンストラクタまたは、デストラクタから仮想関数を呼出してはならない

OOP52-CPP

CL.MLK.VIRTUAL   メモリリーク - デストラクタで発生している可能性

CWARN.DTOR.NONVIRT.DELETE   仮想メソッドを持ち、仮想デストラクタを持たないクラスのオブジェクトの式を削除しています

OOP53-CPP

CERT.OOP.CTOR.INIT_ORDER   コンストラクターメンバー初期化子を正規の順序で作成します

OOP54-CPP

CL.SELF-ASSIGN   解放済みメモリの使用 (二重解放) - operator=

OOP55-CPP

CERT.OOP.PTR_MEMBER.NO_MEMBER   メンバー演算子へのポインターを使用して、存在しないメンバーにアクセスしないでください

OOP57-CPP

CERT.OOP.CSTD_FUNC_USE   C 標準ライブラリ関数よりも特殊メンバー関数とオーバーロードされた演算子を優先します

OOP58-CPP

CERT.OOP.COPY_MUTATES   コピー操作でソースオブジェクトを変更してはいけません

POS30-C

ABV.GENERAL   バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL.MULTIDIMENSION   バッファオーバーフロー - 配列インデックスが範囲外

POS34-C

CERT.PUTENV.AUTO_VARIABLE   自動変数へのポインターを引数として putenv() を呼び出さないでください

POS35-C

CERT.STR.ASSIGN.CONST_TO_NONCONST   const char ポインターを非 const char ポインターに割り当てないでください

SV.TOCTOU.FILE_ACCESS   ファイル アクセス時の作成日時/使用日時の競合状態

POS36-C

SV.USAGERULES.PERMISSIONS   特権の昇給の使用

POS37-C

SV.USAGERULES.PERMISSIONS   特権の昇給の使用

POS39-C

BYTEORDER.HTON.SEND   ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています

BYTEORDER.HTON.WRITE   ホストバイトオーダーからネットワークバイトオーダーの変換が欠落しています

BYTEORDER.NTOH.READ   ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています

BYTEORDER.NTOH.RECV   ネットワークバイトオーダーからホストバイトオーダーの変換が欠落しています

POS44-C

MISRA.INCL.SIGNAL.2012   標準ヘッダーファイル signal.h は使用しない

POS47-C

CERT.POS.THREAD.ASYNC_CANCEL   非同期キャンセルが可能なスレッドを使用してはいけません

POS51-C

CONC.DL   デッドロック

CONC.NO_UNLOCK   変数のロック解除の欠落

POS52-C

CONC.SLEEP   クリティカルセクションで関数がブロックされる可能性があります

POS54-C

SV.RVT.RETVAL_NOTTESTED   戻り値の無視

PRE00-CPP

MISRA.DEFINE.FUNC   マクロが関数のように定義されています

MISRA.USE.EXPANSION   マクロの展開

PRE01-CPP

MISRA.DEFINE.NOPARS   マクロパラメーターに括弧がありません

PRE04-CPP

MISRA.STDLIB.WRONGNAME   標準ライブラリのマクロ、オブジェクトまたは関数の名前が再使用されています

MISRA.STDLIB.WRONGNAME.UNDERSCORE   予約名が言語エンティティの名前に使用されています

MISRA.UNDEF.WRONGNAME   標準ライブラリからの名前が定義されていません

MISRA.UNDEF.WRONGNAME.UNDERSCORE   予約名が定義されていません

PRE06-CPP

MISRA.INCGUARD   インクルードガードが入力されていません

PRE07-CPP

MISRA.CHAR.TRIGRAPH   3 文字表記の使用

PRE09-CPP

SV.BANNED.RECOMMENDED.ALLOCA   禁止が推奨されているAPI: スタック割り当て関数

SV.BANNED.RECOMMENDED.NUMERIC   禁止が推奨されているAPI: 安全でない数値化関数

SV.BANNED.RECOMMENDED.OEM   禁止が推奨されているAPI: OEM 文字ページ変換関数

SV.BANNED.RECOMMENDED.PATH   禁止が推奨されているAPI: 安全でないパス名操作関数

SV.BANNED.RECOMMENDED.SCANF   禁止が推奨されているAPI: 安全でない scanf 型関数

SV.BANNED.RECOMMENDED.SPRINTF   禁止が推奨されているAPI: 安全でない sprintf 型関数

SV.BANNED.RECOMMENDED.STRLEN   禁止が推奨されているAPI: 安全でない文字列長関数

SV.BANNED.RECOMMENDED.TOKEN   禁止が推奨されているAPI: 安全でないトークン作成関数

SV.BANNED.RECOMMENDED.WINDOW   禁止が推奨されているAPI: 安全でないウィンドウ関数

SV.BANNED.REQUIRED.CONCAT   禁止が必須とされているAPI: 安全でない文字列連結関数

SV.BANNED.REQUIRED.COPY   禁止が必須とされているAPI: 安全でないバッファコピー関数

SV.BANNED.REQUIRED.GETS   禁止が必須とされているAPI: 安全でないストリーム読み取り関数

SV.BANNED.REQUIRED.ISBAD   禁止が必須とされているAPI: IsBad 型関数

SV.BANNED.REQUIRED.SPRINTF   禁止が必須とされているAPI: 安全でない sprintf 型関数

PRE30-C

MISRA.DEFINE.SHARP   マクロ定義に # 演算子または ## 演算子が使用されています

PRE32-C

MISRA.EXPANSION.DIRECTIVE   マクロの引数内にディレクティブのようなトークンがあります

SIG35-C

CERT.STDLIB.SIGNAL   計算例外シグナルハンドラーから戻らない

STR02-CPP

NNTS.TAINTED   未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

SV.TAINTED.INJECTION   コマンドインジェクション

STR03-CPP

NNTS.MIGHT   バッファオーバーフロー - 非 NULL 終了文字列

NNTS.MUST   バッファオーバーフロー - 非 NULL 終了文字列

STR04-CPP

MISRA.CHAR.NOT_CHARACTER   文字でない値に 'char' が使用されています

STR06-CPP

SV.BANNED.RECOMMENDED.TOKEN   禁止が推奨されているAPI: 安全でないトークン作成関数

STR07-CPP

MISRA.CHAR.OPERAND   型 'char' または 'wchar_t' の式が文字以外のオペランドで使用されています

STR30-C

CERT.STR.ARG.CONST_TO_NONCONST   const char ポインターを非 const char ポインター引数に渡さないでください

CERT.STR.ASSIGN.CONST_TO_NONCONST   const char ポインターを非 const char ポインターに割り当てないでください

STR34-C

CXX.CAST.SIGNED_CHAR_TO_INTEGER   より大きな整数サイズに変換する前に char を unsigned char にキャストします

STR37-C

AUTOSAR.STDLIB.CCTYPE.UCHAR   <cctype> で定義される文字処理関数の引数は、unsigned char として表現できなければなりません

STR38-C

CXX.DIFF.WIDTH.STR_AND_FUNC   関数の呼び出し時にナロー文字列とワイド文字列の間で暗黙のキャストが行われます

STR50-CPP

NNTS.MIGHT   バッファオーバーフロー - 非 NULL 終了文字列

NNTS.MUST   バッファオーバーフロー - 非 NULL 終了文字列

NNTS.TAINTED   未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

SV.UNBOUND_STRING_INPUT.CIN   バインドされていない文字列入力についての cin の使用法

STR51-CPP

NPD.CHECK.CALL.MIGHT   ポインタを明示的に NULL チェックした後に逆参照する可能性のある関数に渡す可能性があります

NPD.CHECK.CALL.MUST   ポインタを明示的に NULL チェックした後に逆参照する可能性がある関数に渡します

NPD.CHECK.MIGHT   ポインタを明示的に NULL チェックした後に逆参照する可能性があります

NPD.CHECK.MUST   ポインタを明示的に NULL チェックした後に逆参照します

NPD.CONST.CALL   逆参照する可能性のある関数に NULL を渡しています

NPD.CONST.DEREF   NULL は逆参照されます

NPD.FUNC.CALL.MIGHT   NULL を返す関数の戻り値が、これを逆参照する可能性のある別の関数に渡される可能性があります

NPD.FUNC.CALL.MUST   NULL を返す関数の戻り値が、これを逆参照する可能性がある別の関数に渡されます

NPD.FUNC.MIGHT   NULL を返す可能性のある関数の戻り値が逆参照される場合があります

NPD.FUNC.MUST   NULL を返す可能性がある関数の戻り値が逆参照されます

NPD.GEN.CALL.MIGHT   NULLポインタを逆参照する可能性がある関数に渡す場合があります

NPD.GEN.CALL.MUST   NULLポインタを逆参照する関数に渡します

NPD.GEN.MIGHT   NULLポインタを逆参照する可能性があります

NPD.GEN.MUST   NULLポインタを逆参照します

RNPD.CALL   NULL チェック前のポインタの、関数呼び出しにおける逆参照は問題となる可能性があります

RNPD.DEREF   NULL チェック前のポインタの逆参照は問題となる可能性があります