自動車開発向け HKMC C セキュアコーディング基準

ガイドライン チェッカー名および説明
HKMC C-ARR-001 (高): インデックスが配列のメモリ読み取りと書き込み操作の有効な範囲内にあることを確認してください [AP,MCU]

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

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

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

ABV.NON_ARRAY  非配列オブジェクトが配列として使用される

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

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

ABV.UNICODE.BOUND_MAP  文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.FAILED_MAP  関数のマッピングに失敗します

ABV.UNICODE.NNTS_MAP  文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.SELF_MAP  関数のマッピングに失敗します

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

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

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

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

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

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

HKMC C-ARR-003 (中): 同じ配列を参照していない 2 つのポインターを減算または比較しないでください [AP, MCU]

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

HKMC C-ARR-004 (中): 配列以外のオブジェクトを指すポインターに整数を加算または減算しないでください [AP, MCU]

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

HKMC C-ARR-006 (高): ポインターで自動的にサイズ変更された整数を加算および減算しないでください [AP, MCU]

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

HKMC C-ARR-008 (高): バッファ開始前の書き込み

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

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

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

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

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

ABV.NON_ARRAY  非配列オブジェクトが配列として使用される

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

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

ABV.UNICODE.BOUND_MAP  文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.FAILED_MAP  関数のマッピングに失敗します

ABV.UNICODE.NNTS_MAP  文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.SELF_MAP  関数のマッピングに失敗します

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

CXX.SUSPICIOUS_INDEX_CHECK  境界チェック後のインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.CALL  境界チェック後の関数呼び出しでのインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.ZERO  ゼロのインデックスチェック後のインデックスの不審な使用

RABV.CHECK  境界チェック前のインデックスの不審な使用

RN.INDEX  負の値のチェック前のインデックスの使用は問題となる可能性があります

SV.STRBO.BOUND_SPRINTF  バインドされた sprintf でのバッファオーバーフロー

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

HKMC C-ARR-009 (低): ソースバッファサイズを使用したバッファアクセス

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

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

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

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

ABV.NON_ARRAY  非配列オブジェクトが配列として使用される

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

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

ABV.UNICODE.BOUND_MAP  文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.FAILED_MAP  関数のマッピングに失敗します

ABV.UNICODE.NNTS_MAP  文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.SELF_MAP  関数のマッピングに失敗します

HKMC C-ARR-010 (中): 関数を呼び出すときに無効な引数を含めないための注意 [MCU]

MISRA.FUNC.UNMATCHED.PARAMS  関数に渡される仮引数と実際のパラメーターの数が一致しません

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

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

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

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

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

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

HKMC C-ARR-011 (高): 関数による戻り値の誤判定に関する注意

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

HKMC C-CON-004 (中): ライブラリ関数を使用するときに競合状態を避けます

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

HKMC C-CON-006 (低): デッドロックを回避するために事前定義された順序に従ってロックします

CONC.DL  デッドロック

HKMC C-CON-007 (低): ループ内で擬似的に起動する可能性のある関数のラッピング

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

HKMC C-CON-008 (低): マルチスレッドプログラムで signal() を呼び出さないでください

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

HKMC C-CON-009 (低): 条件変数を使用するときにスレッドセーフと活性を維持します

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

HKMC C-CON-011 (中): 1 つの式でアトミック変数を 2 回参照しないでください

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

HKMC C-DCI-001 (高): ローカル変数アドレスを戻したり、代入したりしないでください

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

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

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

HKMC C-DCI-002 (中): 内部と外部のリンケージに同じ変数を宣言しないでください

MISRA.FUNC.STATIC.REDECL  関数またはオブジェクトの再宣言に 'static' 修飾子がありません

HKMC C-DCI-003 (低): 予約済みの識別子を宣言または定義しないでください

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

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

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

HKMC C-DCI-004 (低): 柔軟な配列を宣言するときに正しい構文を使用する必要があります

CERT.STRUCT.FLEXIBLE_ARRAY_MEMBER  フレキシブル配列メンバーの宣言時には正しい構文を使用する

HKMC C-DCI-005 (低): 信頼境界を越えて構造を渡すときに情報のリークを避ける必要があります

PORTING.STORAGE.STRUCT  構造の要素のバイト位置が配置属性およびパッケージ属性に依存している可能性があります。

HKMC C-DCI-006 (低): 互換性のない関数またはオブジェクトを宣言しないでください

MISRA.FUNC.NOPROT.DEF.2012  関数は定義されていますが、プロトタイプがありません

MISRA.FUNC.PARAMS.IDENT  関数の宣言と定義で使用される識別子が一致していません

HKMC C-DCI-007 (中): switch ステートメントで最初の case ラベルの前に変数を宣言しないでください

CERT.DCL.SWITCH.VAR_BEFORE_CASE  switch ステートメント内では最初の case ラベルより前で変数を宣言しないでください

HKMC C-DCI-009 (中): switch ステートメントでデフォルトの case を欠かさないでください

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

HKMC C-DCI-010 (中): switch ステートメントで break を省略しないでください

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

HKMC C-DCI-011 (高): 括弧を使用して演算子の優先順位を明示的に処理する必要があります

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

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

HKMC C-DCI-012 (高): 最小チェックなしで数値範囲を比較しないでください

RN.INDEX  負の値のチェック前のインデックスの使用は問題となる可能性があります

HKMC C-ENV-001 (低): 特定の関数の戻り値で参照されるオブジェクトを変更しないでください

MISRA.STDLIB.CTYPE.RANGE.2012_AMD1  ctype.h で関数に渡される値はすべて unsigned char として表現できるか、または値 EOF でなければなりません

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

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

HKMC C-ENV-003 (中): すべての exit ハンドラーは正常に戻る必要があります

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

HKMC C-ENV-004 (高): system() を呼び出さないでください

MISRA.STDLIB.SYSTEM.2012_AMD2  ライブラリ stdlib.h からの 'system' の使用

HKMC C-ERR-001 (中): errno に関連するライブラリを呼び出す際の注意

CXX.ERRNO.INCORRECTLY_CHECKED  ライブラリ関数を呼び出した後に、errno の条件チェックは必要ない

CXX.ERRNO.NOT_CHECKED  ライブラリ関数を呼び出した後に、errno の条件チェックが欠落している

CXX.ERRNO.NOT_SET  ライブラリ関数を呼び出す前に、errno はゼロにリセットされていない

HKMC C-ERR-002 (高): 標準ライブラリのエラーを検出および処理します

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

HKMC C-ERR-003 (中): 文字列を数値に変換するときにエラーを検出します

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

HKMC C-EXP-001 (中): 関数による戻り値を無視しないでください

MISRA.FUNC.UNUSEDRET.2012  非 void 関数の戻り値を使用してください

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

HKMC C-EXP-002 (中): 副作用を引き起こす計算 (評価) の順番に関する注意

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

MISRA.INCR_DECR.SIDEEFF.2012  インクリメント (++) またはデクリメント (--) 演算子を含む完全な式では、インクリメントまたはデクリメント演算子によって生じる以外に他の副作用が存在してはなりません

MISRA.LOGIC.SIDEEFF  論理 'and' 式または論理 'or' 式の右側のオペランドは副作用があります

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

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

HKMC C-EXP-003 (高): 初期化されていないメモリを参照 (アクセス、読み取り) しないでください

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  未初期化の変数

HKMC C-EXP-004 (中): 異常なポインターを参照しないための注意

SV.TAINTED.CALL.DEREF  未検証ポインターの逆参照

SV.TAINTED.DEREF  未検証ポインターの逆参照

HKMC C-EXP-005 (低): 比較演算子の代わりに代入演算子を使用する際の注意

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

ASSIGCOND.GEN  割り当て条件

HKMC C-EXP-006 (中): 代入演算子の代わりに比較演算子を使用する際の注意

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

HKMC C-EXP-007 (高): ループの制御条件に対するチェックが行われていない外部入力に関する注意

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

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

HKMC C-EXP-009 (高): null ポインターを逆参照しないでください

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 チェック前のポインタの逆参照は問題となる可能性があります

HKMC C-EXP-010 (低): より厳密に整列されたポインター型にポインターをキャストしないでください

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

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

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

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

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

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

HKMC C-EXP-011 (中): 互換性のない型のポインターを介して変数にアクセスしないでください

MISRA.CAST.FUNC_PTR.2012   関数を指すポインタと、別の非互換タイプとの間で実行された変換

MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012   不完全なタイプ を指すポインタと、別のタイプとの間で実行された変換

MISRA.CAST.OBJ_PTR_TO_NON_INT.2012   オブジェクトを指すポインタと、非整数算術演算タイプとの間のキャスト

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

HKMC C-EXP-012 (低): 定数オブジェクトを変更しないでください

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

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

HKMC C-EXP-013 (中): パディングデータを比較しないでください

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

HKMC C-EXP-014 (中): restrict を修飾するポインターを使用する際の、未定義の動作を避けることに関する注意

MISRA.TYPE.RESTRICT.QUAL.2012  restrict 型修飾子は使用しない

HKMC C-EXP-015 (低): 変数の値を変更する式をオペランドとして sizeof、_Alignof、_Generic に渡さないでください

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

HKMC C-EXP-016 (低): 特定の演算子で代入演算を行わないでください

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

ASSIGCOND.GEN  割り当て条件

MISRA.ASSIGN.COND  条件内で代入演算子が使用されています

HKMC C-EXP-017 (低): ブール型のオペランドでビット演算子を使用しないでください

MISRA.LOGIC.OPERATOR.NOT_BOOL  論理演算ではない演算子のオペランドが実質的にはブール値です

HKMC C-FIO-001 (高): 書式文字列からユーザー入力を除外します

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

HKMC C-FIO-002 (高): ファイルから読み込んだ文字と EOF または WEOF を区別します

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

HKMC C-FIO-005 (低): fgets() または fgetws() の失敗時には文字列をリセットする

CERT.FIO.RESET  fgets() または fgetws() の失敗時には文字列をリセットする

HKMC C-FIO-007 (中): ファイルを不要になったときに閉じます

RH.LEAK  リソースリーク

HKMC C-FIO-008 (高): 有効な書式文字列を使用します

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 関数呼び出しの書式指定子が不明です

HKMC C-FIO-009 (低): 同期が不適切な共有リソースを使用して同時実行しないでください (競合状態)

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

HKMC C-FLP-001 (高): 浮動小数点変数をループカウンターとして使用しないでください

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

HKMC C-FLP-002 (低): 浮動小数点型の変換が新しい型の範囲内で発生することを確認してください

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

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

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

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

HKMC C-FLP-003 (低): 整数型を浮動小数点型に変換するときに精度を保持します

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

HKMC C-INT-001 (中): 整数変換規則に関する注意 (CERT 推奨)

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

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

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

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

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

PRECISION.LOSS  精度の損失

HKMC C-INT-002 (高): 符号なし整数演算がラップしないことを確認してください

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

HKMC C-INT-003 (高): 整数変換により、データが失われたり、誤解釈されないように、保証する必要があります

PRECISION.LOSS  精度の損失

PRECISION.LOSS.CALL  関数呼び出し中の精度の損失

HKMC C-INT-004 (高): 符号付き整数演算がオーバーフローしないことを確認してください

CWARN.NOEFFECT.OUTOFRANGE  範囲外の値

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

HKMC C-INT-005 (低): 除算演算および剰余演算により、'ゼロ除算エラー' が発生しないことを確認してください

DBZ.CONST  ゼロ定数による除算が発生しました

DBZ.CONST.CALL  値 '0' が除数としてこの値を使用できる関数に渡されます

DBZ.GENERAL  ゼロ除算が発生した可能性があります

DBZ.GENERAL.FLOAT  浮動小数点数のゼロ除算が発生した可能性があります

DBZ.ITERATOR  ループ反復子でゼロ除算が発生した可能性があります

DBZ.ITERATOR.CALL  関数呼出しでゼロ除算が発生した可能性があります

DBZ.ITERATOR.FLOAT  ループ反復子でゼロ除算が発生した可能性があります

HKMC C-INT-006 (低): 負の値にシフトしたり、オペランドのビット数以上にシフトしないでください

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

HKMC C-INT-007 (低): 整数型の正しい精度を使用します

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

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

HKMC C-INT-008 (低): ポインターと整数の間での型変換に関する注意

MISRA.CAST.OBJ_PTR_TO_INT.2012   オブジェクトを指すポインタと、整数タイプとの間で実行された変換

HKMC C-INT-009 (中): バッファまたはデータ型のサイズの計算に関する注意

CXX.SIZEOF.CSTRING  char* での sizeof の使用は、誤解を招く場合があります

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

HKMC C-MEM-001 (高): 解放されたメモリを参照しないでください

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

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

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

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

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

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

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

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

HKMC C-MEM-002 (中): 動的に割り当てられたメモリを不要になったときに解放します

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

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

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

HKMC C-MEM-004 (高): 動的に割り当てられたメモリを解放します

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

MLK.MUST  メモリリーク

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

MLK.RET.MUST  メモリリーク

HKMC C-MEM-005 (高): オブジェクトに十分なメモリを割り当てます

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

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

HKMC C-MEM-007 (中): リリース前のヒープメモリの不適切なクリア ('ヒープ検査')

CXX.REALLOC  realloc() の使用は避けてください

HKMC C-MSC-003 (中): PRNG を使用して乱数を生成する場合は rand() を使用しないでください

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

HKMC C-MSC-004 (中): PRNG を使用するときにシードを正しく設定します

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

HKMC C-MSC-005 (高): asctime() の使用時に不適切な引数を渡すことに関する注意

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

HKMC C-MSC-006 (高): void 戻り型以外のすべての関数を返します

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

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

HKMC C-MSC-008 (低): 不正確な型の引数で va_arg を呼び出さないでください

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

HKMC C-MSC-010 (中): マルチスレッドアプリケーションで getlogin を使用しないでください

CXX.GETLOGIN  マルチスレッドアプリケーションで getlogin を使用しないでください

HKMC C-MSC-013 (N/A): 暗号化アルゴリズムまたはハッシュ関数を使用するときに、一定レベルのセキュリティを満たすようにします

RCA  危険な暗号化アルゴリズムが使用されています

HKMC C-MSC-014 (高): DES 対称キーアルゴリズムや MD5 ハッシュアルゴリズムなど、セキュリティの脆弱性を検出するアルゴリズムを使用しないでください [MCU]

SV.WEAK_CRYPTO.WEAK_HASH  弱ハッシュ関数

HKMC C-MSC-015 (高): 一定のシードまたは予測可能なシードを使用しないでください [MCU]

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

HKMC C-POS-002 (低): vfork() には使用しないでください

CXX.POSIX.VFORK  vfork() を使用しないでください

HKMC C-POS-003 (高): putenv() でポインターをローカル変数に渡さないでください

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

CXX.PUTENV.LOCAL.PTR  putenv() でポインターをローカル変数に渡さないでください

HKMC C-POS-005 (中): システム間のデータ通信には正しいバイト順序の使用が必要です

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

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

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

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

HKMC C-POS-006 (低): スレッドを終了するためにシグナルを使用しないでください

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

HKMC C-POS-008 (高): POSIX ライブラリのエラーを検出および処理します

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

HKMC C-POS-009 (高): 不適切なリソースロックに関する注意

CONC.DBL_LOCK  二重ロック

CONC.DBL_UNLOCK  二重ロック解除

CONC.DL  デッドロック

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

HKMC C-POS-011 (中): ステートメントのブロック区切りをクリアします [MCU]

MISRA.IF.NO_COMPOUND  if/else ステートメントのボディが複合ステートメントではありません

HKMC C-POS-012 (中): '実行されないコード' を削除します [MCU]

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  ステートメントの影響はありません

INVARIANT_CONDITION.GEN  不変な条件式

INVARIANT_CONDITION.UNREACH  不変な条件式

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

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

UNREACH.GEN  到達不能コード

UNREACH.RETURN  到達不能な void return文

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

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

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

HKMC C-PRE-002 (低): 特定の変数値の変換引数を安全でないマクロに渡さないでください

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

HKMC C-PRE-003 (低): 関数のようなマクロを呼び出すときに、前処理ディレクティブを渡さないでください

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

HKMC C-STR-001 (低): 文字列リテラルを変更しないでください

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

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

HKMC C-STR-002 (高): ストレージに文字データと null 終了文字のための十分なスペースがあることを確認してください

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

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

SV.FMT_STR.BAD_SCAN_FORMAT  入力書式指定子エラー

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

HKMC C-STR-003 (高): null で終了しない文字列をライブラリ関数に渡さないでください

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

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

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

SV.STRBO.BOUND_COPY.UNTERM  次の文字列演算でバッファオーバーフローの可能性があります

HKMC C-STR-004 (低): 文字処理関数への引数は unsigned char として渡される必要があります

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

MISRA.ETYPE.ASSIGN.2012   より狭い基本タイプ、または、異なる基本タイプカテゴリーのオブジェクトへの割り当て

HKMC C-STR-005 (高): 文字処理関数に引数を渡すときに、ナロー文字列とワイド文字列を混同しないでください

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

HKMC C-STR-006 (低): マルチバイト文字列長の不正確な計算

CXX.MALLOC.WCHAR_LENGTH  wchar_t バッファの場合、malloc でメモリを割り当てるときに (wsclen()+1*sizeof(wchar_t)) を使用します