C:2004 C:2012 C++:2008
R1.1.1 自動変数 宣言時 初期化 値 使用 直前 初期値
入
9.1 R9.1 8-5-1 EXP33-C EXP53-CPP CWE-119 CWE-456 CWE665
R1.1.2 const 型変数 宣言時 初期化 CWE-456 C版
R1.2.1 要素数 指定 配列 初期化 初期値 数 指定 要素数
一致
ARR02-C STR11-C STR31-C
CWE-119 CWE-120 CWE-193
C版
R1.2.2 列挙型enum型 ン 初期化 定数 全く指定 い
指定 最初 ン 指定 い
9.3 R8.12 8-5-3 INT09-C CWE-665
ン 整数 加減算++ -- 含 使用 確保
領域 参照 入 [ ] 用い 配列形式 行う
17.1 R18.1
ン 整数 加減算++ -- 含 ン 配列
指 い 場合 結果 配列 範 内 指 う
17.4 R18.4
R1.3.2 ン 士 減算 配列 要素 指 ン 使用
17.2 R18.2 5-0-17 ARR36-C ARR36-C CWE-469
R1.3.3 ンタ 士 比較 配列 要素 構造体
ン を指 ンタ け使用
17.3 R18.3 5-0-18 ARR36-C ARR36-C CWE-188 CWE-469
R1.3.4 restrict 型修飾子 使用 い R8.14 EXP43-C C版
ン ン 初期化 初期化 方法
通
初期化 ン 初期化子 行う 型 外 複数 ン 値 初期化 場合 限 い
ン 初期化子 基底 ン そ 宣言
記述
ン 初期化子 初期化 ン
使用 い ン 使用 場合 そ
ン 前 宣言 ン
R1.4.2 ン 入演算子 非静的 ン
複写
R1.4.3
ン 読取 参照 ン 関数 出 ン 完全 初期化
解体 始 前
R1.4.4 ン 仮想関数 び出 い 12-1-1 OOP50-CPP
R1.4.5 ン 入演算子 構築 失敗 対応 15-1-1
15-3-1
MEM51-CPP MEM52-CPP
CWE-590 CWE-415 CWE-404 CWE-762
R1.4.6 ン 記述 catch ン ン
参照 い
15-3-3 ERR53-CPP
R1.5 生 成 破 棄 気 を
付け
R1.5.1 対応 new delete 形式[ ]付 う 使用 MEM51-CPP
CWE-590 CWE-415 CWE-404 CWE-762
R2.1.1 浮動小数点式 等価 非等価 比較 い 13.3 D1.1 6-2-2 FLP00-C
R2.1.2 浮動小数点型変数 ン 使用 い 13.4 R14.1 6-5-1
FLP00-C
FLP30-C FLP30-C
構造体や共用体 比較 memcmp 使用 い
EXP42-C FLP37-C
型 比較 memcmp 使用 い
EXP62-CPP FLP37-C OOP57-CPP
R2.2
論理値 区間 定義さ い 場合 そ 中 一点 表 的 実装値 等 い う
判定を行 い
R2.2.1 真偽 求 式 中 真 定義 値 比較 い C版
R2.3.1 符号 整数定数式 結果 型 表現出来 範 内 記述 12.11 R12.4 5-19-1 INT30-C INT30-C CWE-190
R2.3.2 条件演算子? : 演算子 論理式 括弧 戻 値
型
INT02-C
R2.3.3 ン 条件 比較 使用 変数 型
INT02-C
R2.4.1 演算 型 演算結果 入先 型 異 場合 期待 演算精
度 型 キ 演算
10.3 10.4 R10.8
5-0-7 5-0-8
INT02-C INT18-C FLP06-C FLP36-C
FLP36-C
R2.4.2 符号付 式 符号 式 混在 算術演算 比較 行う場合
期待 型 明示的 キ
INT02-C
API09-C CWE-195
R2.5.1
情報損失 起 可能性 あ 型 入 =演算 関数 出 実引数渡 関数復帰や演算 行う場合 問題 い 確認
問題 い 明示 キ 記述
10.1
10.2 R10.3 5-0-3
INT02-C INT08-C INT18-C INT31-C INT32-C FLP34-C FLP36-C STR34-C STR37-C API09-C
INT31-C FLP34-C FLP36-C STR34-C STR37-C
CWE-192 CWE-197 CWE-681 CWE-686 CWE-704
R2.5.2 単 演算子 ”-” 符号 式 使用 い 12.9 R10.1 5-3-2 INT30-C INT30-C
R2.5.3
unsigned char型 unsigned short型 反転
~ く 左 << 場 合 結果 型 明 示的 キ 10.5 5-0-10 INT30-C INT30-C
R2.5.4 演算子 右辺 左辺 幅 満
ば い
12.8 R12.2 5-8-1 INT34-C INT34-C
CWE-188 CWE-469 [信頼性 ] R2 範 大 内部表現 気 付 使用
8-5-1 EXP53-CPP
OOP53-CPP
R2.5
MISRA 関係
[信頼性 ] R1 領域 初期化 大 気 付 使用
CERT C CWE
R1.3.1
5-0-15 5-0-16
ARR30-C ARR37-C ARR39-C
CWE-119 CWE-122 CWE-129 CWE-468 CWE469 CWE-788 CWE-823 R1.1
R1.3 R1.2
CERT C++
領域 初期化 使用
初期化 過不足無いこ 分 う 記述
ンタ 指 範 気を付け
ARR30-C ARR37-C ARR39-C
R1.4.1
R1.4
R2.1
R2.3
R2.4
R2.1.3 内部表現 依 い比較を行
う
タ型を揃え 演算や比較を行 う
演算精度を考慮 記述
情報損失 危険 あ 演算 使用 い
作 法 詳 細
C:2004 C:2012 C++:2008 MISRA 関係
CERT C CWE
CERT C++
作 法 詳 細
使用 型 signed int unsigned int
幅 必要 場合 signed int 型
く unsigned int 型 使用
使用 型 signed int unsigned int
_Bool 1 幅 必要 場合 unsigned
int 型 _Bool型 使用
6.4 R6.1
使用 型 signed int unsigned int _Bool
処理系 許容 い 型 う signed unsigned 指定
型 enum 型 使用 1 幅
必 要 場 合 unsigned 指 定 型 _Bool型 使 用
6.5 R6.2
R2.6.2 列 使用 符号付 型 く 符号 型 定
義
12.7 R10.1 5-0-21 INT13-C
ン 型 ン 型及び整数型 相互 変換
い ン 型 void* 型 相互変換
除く
ン 型 ン 型及び整数型 変換 い
逆 行 い 場合 除く
ン 型 void*型 変換
派生関係 あ 型 ン 間 変換
ン 型 ン 型及び ン 型 幅 満
整数型 相互 変換 い ン
型 void*型 相互変換 除く
ン 型 ン 型及び ン 型 幅 満 整
数型 変換 い 場合 除く
ン 型 void*型 相互 変換
派生関係 あ 型 ン 間 変換
ン 型 ン 型及び ン 型 幅 満
整数型 相互 変換 い ン
型 ン 型及びvoid* 型 相互変換
除く
ン 型 型 ン 型及び void*
型 変換 良い 関数型 ン 関数型及び 型 ン 型 変換 い ン 型 整数型 変換 場合 ン 型 幅 満 整数型 変換
行 い
R2.7.2 ン 指 示 型 const 修飾や volatile 修飾 取 除く
キ 行 い
11.5 R11.8 5-2-5
DCL13-C EXP05-C EXP08-C EXP32-C EXP40-C
EXP55-CPP
R2.7.3 ン 負 う 比較 い
派生 指 ン 基底 指 ン 変換
良い 基底 指 ン 派生 指 ン
変換 い
派生 指 ン 基底 指 ン 変換
良い 基底 指 ン 派生 指
ン dynamic_cast 演算子 利用 ば変換 良い
R2.8.1 引数 い関数 引数 型 void 宣言
DCL20-C EXP37-C
CWE-628 CWE-686 C版
可変個引数 持 関数 定義 い 16.1 R17.1
可変個引数 持 関数 使用 場合 処理系 動作 文書化 使用
R2.8.3 1 宣言 1箇所 記述 そ 関数 出 及び関数定
義 両方 参照 う
8.1 8.3 8.4
R8.2 R8.3 R8.4 R17.3
3-2-1 3-2-2 3-3-1 3-9-1
DCL07-C DCL31-C DCL40-C EXP37-C
DCL40-C EXP37-C
CWE-628 CWE-686
配列 extern 宣言 要素数 必 指定
要素数 省略 初期化付 配列定義 対応 配列 extern 宣言 除 配列 extern 宣言 要素数 必 指定
R3.1.2 配列 条件 配列 範 内 あ
う 定 入
ARR30-C ARR30-C
CWE-119 CWE-121 CWE-122 CWE-129 CWE-788
R3.1.3 指示付 初期化子 初期化 配列 明示 ARR02-C C版
R3.1.4 可変長配列型 使用 い R18.8
ARR32-C
MEM05-C C版
izo演算子 ン 型 変数 用い い
izo 演算子 配列型 引数 用い い
R3.2.1 除算や 余算 右辺式 0 い 確認 演算 行う 21.1 D4.1 0-3-1 INT33-C INT33-C CWE-369
R3.2.2 ン ン い 確認 ン 指 先
参照
21.1 D4.1 0-3-1 EXP34-C EXP34-C CWE-476
R3.3.1 関数 情報 戻 場合 情報 ば い 16.1 D4.7 0-3-2
EXP12-C FLP32-C ERR33-C
FLP32-C ERR33-C
CWE-252 CWE-390 CWE-391 CWE-682
R3.3.2 関数 処理 開始前 引数 制約 20.3 D4.11 0-3-1
FLP32-C
API00-C FLP32-C CWE-20 CWE-682
R3.4 再帰呼出 行わ い R3.4.1
関数 直接的 間接的 わ そ 関数自身 び出 い
16.2 R17.2 7-5-4 MEM05-C CWE-674
DCL50-CPP EXP58-CPP MSC39-C
CWE-628
R3.1.1 8.12
EXP36-C EXP39-C INT36-C
[信頼性 ] R3 動作 保証 書 方
DCL10-C DCL11-C MSC39-C
CWE-129
R3.1
R3.1.5
R8.11 R2.8
R2.8.2 8-4-1
5-2-2 5-2-3 R2.7.4
R2.6
R2.6.1
9-6-2 9-6-3 9-6-4
INT12-C
R2.7.1
11.1 11.2 11.3 11.4
R11.1 R11.2 R11.3 R11.4 R11.5 R11.6 R11.7
5-2-6 5-2-7 5-2-8 5-2-9
EXP36-C EXP39-C INT36-C
CWE-119 CWE-466 CWE-587
R2.7
R3.2
R3.3
3-1-3 ARR02-C
対象 タ 表現可能 型を使用
ンタ 型 気を付け
宣言 使用 定義 矛盾 無いこ
をコン チ ッ
書 方
領域 大 さを意識 書 方
実行時 可能性 あ
演算 対 を迂回させ
関数呼出 ンタ
C:2004 C:2012 C++:2008 MISRA 関係
CERT C CWE
CERT C++
作 法 詳 細
R3.5.1
if-else if 文 最後 else 節 置く
通常 else 条件 発生 い い 場合 い
記述
i else 節 例外発生時 処理 記述
ii else 節 規定 ン 入
14.10 R15.7 6-4-2 MSC01-C
R3.5.2
switch 文 最後 default 節 置く
通常 default 条件 発生 い い 場合 い
記述
i default 節 例外発生時 処理 記述
ii default 節 規程 ン 入
15.3 R16.4
R16.5 6-4-6 MSC01-C CWE-478
R3.5.3 ン 比較 等価演算子== 不等価演算子!= 使用
い <= >= < > 使用
6-5-2 MSC21-C
R3.6.1 変数 値 変更 記述 式内 そ 変数 参照 変更
い
12.13 R13.3 5-2-10 EXP10-C
EXP30-C EXP50-CPP
R3.6.2 実引数並び 及び 演算式 作用 持 関数 出 volatile 変
数 複数記述 い
12.2 R13.2 5-0-1 EXP10-C
EXP30-C EXP50-CPP
R3.6.3 sizeof 演算子 作用 あ 式 用い い EXP44-C EXP52-CPP
R3.7.1 資源 管理 ン 入演算子
定義
R3.7.2 基底 仮想 宣言 OOP52-CPP
コ 入演算子 次 規則 従う う 定義 自身 参照 返
T &operator = (const T &) T &operator = (T)
い 形式 宣言 返却型 const 付 い
自身 入 可能
R3.7.4 仮想関数を 引数 値を変
更 い
8-3-1
R3.7.5 派生 非仮想関数を再定義 い
R3.7.6 ッ 動作をさせ を関数引 数
場合 参照渡 ンタ渡 を使用
OOP51-CPP
例外処理 使用 い
例外処理 使用 場合 使用方法 規定
R3.8.2 例外指定 記述 い
15-4-1
15-5-2 ERR55-CPP
R3.8.3 NULL throw い 15-1-2
R3.8.4 ン 例外 送出 い 15-0-2
R3.8.5 例外 送出 い 15-5-1 DCL57-CPP
R3.8.6 再送出 送出式 引数 記述 い
R3.8.7 例外 参照 捕捉 15-3-5 ERR61-CPP
R3.8.8 例外 ン 派生 基底 ... 例外 捕捉
記述
15-3-6
15-3-7 ERR54-CPP
R3.8.9 main 関数 例外 漏 無く捕捉 15-3-2
ERR51-CPP ERR58-CPP CWE-754
R3.9 ン 動作 気を付け
R3.9.1 ン 仮引数 ン 参照 場合 ン 特
化 用意
R3.10 式 動作 気 R3.10.1
式 キ 利用 利用 局
所 明示
EXP54-CPP EXP61-CPP
並行処理 vo ai 期 使用 い
並行処理 vo ai く ::ao i 利用
R3.11.2 一領域 割 当 可能性 あ 対 複数
行わ い く 適 排 制御 行う
CON32-C SIG30-C SIG31-C SIG34-C SIG35-C
CON52-CPP SIG30-C SIG31-C SIG34-C SIG35-C
CWE-479 CWE-662
M1.1.1 使用 い関数 変数 引数 typedef 宣言
定義 い
0-1-3 0-1-5 0-1-10 0-1-11 0-1-12
MSC07-C CWE-561
一部 " ン " い 2.4 D4.4
一部 ン 場合 // ン 使用
宣言文 宣言 変数 複数宣言 い
う 目的 使用 型 自動変数 宣言文 複 数宣言 い 初期化 変数 初期化 い変数 混在
い
M1.2.2
適 型 示 接 尾語 使 用出 来 定数 記述 接 尾語 付 記 述 long型 整 数 定 数 示 接 尾 語 大 文 “L” 使 用
2-13-3
2-13-4 DCL16-C
M1.2.3 長い文 列 表現 場合 文 列 内 改行 使
用 連 文 列 連結 使用
M1.2.4 前空間 使用方法を規定 7-3-4
M1.2.5 ネ 前空間定義を行わ い
M1.2.6 関数 ン 明示的 特 化を使用 い 14-8-1
M1.2.7 値 指定 持 引数 除い 宣言 ン
あ う ン 定義 い [保守性 ] M1 人 読 意識
R3.8.1 R3.7.3 R3.6
R3.7
R3.8
MSC04-C M1.1.2
M1.2.1 DCL04-C
CWE-479 CWE-662
2-7-2 2-7-3 M1.1
M1.2 R3.5
R3.11
15-0-1
OOP54-CPP OOP58-CPP
R3.11.1
SIG30-C SIG31-C SIG34-C SIG35-C
SIG30-C SIG31-C SIG34-C SIG35-C 動作 気を付け
例外 動作 気を付け
分岐 条件 気を付け 所定 条
件 外 発生 場合 処理を記
述
評価順序 気を付け
く 用い
共有 法
気
使用 い記述を さ い
C:2004 C:2012 C++:2008 MISRA 関係
CERT C CWE
CERT C++
作 法 詳 細
M1.3.1 switch ( 式 ) 式 真偽結果 求 式 記述 い 15.4 R16.7 6-4-7
M1.3.2 switch文 case 及 びdefault switch文 体 複文
そ 中 入 子 複文 除く 記述
15.1 R16.2 6-4-4 MSC20-C
M1.3.3 関数や変数 定義や宣言 型 明示的 記述 DCL31-C C版
M1.4.1
&&や||演 算 右式 左式 二 演算 含 い式 ( )
式 記述 &&演算 連 結合 い 場合や ||演算
連 結合 い 場合 &&式や || 式 ( ) 必要 無い
12.5 R12.1 5-0-2
5-2-1 EXP00-C
M1.4.2 演算 優先 位 明示 括弧 付 方 規定 12.1 R12.1 5-0-2
EXP00-C EXP13-C
M1.5.1 関数識 子関数 前 & 付 括弧付 仮引数
空 可 指定 使用 ば い
16.9 8-4-4
条件 定 式 0 比較 明示的 13.2 R14.4
if 文や 条件式 型 明示的 bool型 う
M1.6.1 目的 変数 用意 18.3
共用体 使用 い 18.4 R19.2
共用体 使用 場合 書 込 ン 参照
前 一意性 次 規則 従う
.内部 宣言 識 子 外側 宣言
識 子 隠 い
5.2 R5.3
.typedef 修飾 あ 場合 そ 含 固有 識 子
ば い
5.3 R5.6
. 一意 識 子 ば い 5.4 R5.7
. 共用体 列挙体 修飾 あ 場合 そ 含 固 有 識 子 ば い
.外部結合 や関数 定義 識 子 一意 ば い
R5.8
.内部結合 や関数 定義 識 子 一意 あ
5.5 R5.9
.構造体及び共用体 ン 除い あ ネ 識
子 ネ 識 子 綴 い い
5.6 C版
.あ 識 子 識 子 綴 い
い
M1.7.2 標準 関数 変数 再定義再利用
い 定義 解除 い
20.1 20.2
R21.1 R21.2
17-0-1 17-0-2 17-0-3
DCL37-C DCL51-CPP
M1.7.3 線 始 前変数 定義 い
17-0-1
17-0-2 DCL37-C DCL51-CPP
M1.8.1 論理演算子 && || 右側 ン 作用 あ
い
12.4 R13.5 5-14-1 EXP02-C
EXP30-C EXP50-CPP CWE-768 C 波括弧’{ }’ 初 期化 子 定数 ( )
式 型 修飾子 記憶域 指定子 do-while-zero構造 展
開 ば い
19.4 R20.4
重複取 込 防 型修飾子記憶
域 指定子 展開 ば い
M1.8.3 #line 自動生成 外 使用 い
M1.8.4 ?? 始 文 文 並び 及び 替 句表記 使用
い
4.2 R4.2 2-3-1
2-5-1 PRE07-C
M1.8.5 0 始 長 2 数 列 定数 使用 い 7.1
R4.1
R7.1 2-13-2 DCL18-C
M1.8.6 && || , ン & 演算子 い
5-2-11 5-3-3
M1.8.7 変換関数を定義 い
M1.8.8 引数 ン explicit 指定子 付 12-1-3
M1.9.1 意 的 何 い文 記述 ば い場合 ン 空
利用 目立
14.3 R15.6 6-2-3
M1.9.2 無限 書 方 規定
M1.10 ッ ン を埋 込
い
M1.10.1 意味 あ 定数 const 定数 定義 使用 DCL06-C CWE-547
M1.11.1 参照 い領域 const あ 示 宣言 行う 16.7 R8.13
7-1-1
7-1-2 DCL00-C
M1.11.2 実行単位 更新 可能性 あ 領域 volatile あ
示 宣言 行う
DCL22-C
M1.11.3 ROM 化 変数宣言 定義 規定 DCL00-C
M1.12 コ ン さ い 文 正 い
記述を行う
M1.12.1 セッサ 削除 部分 正 い記述を行う 19.16 R20.13
M2.1.1
配列や構造体 0 外 初期化 場合 構造 示 そ 合わ 波 括弧"{ }" 使用 ば い 0 場合 除 漏 無く記述
9.2 R9.2
R9.3 8-5-2
M2.1.2 if else if else while do for switch 文 体 化
14.8 14.9 R15.6
6-3-1
6-4-1 EXP19-C
M2.2.1 関数内 使用 変数 関数内 変数宣言 8.7 R8.9
DCL15-C DCL19-C
一 内 定 義 複 数 関 数 変 数 static 変数宣言
8.10 8.11
R8.7 R8.8
無 前空間 宣言
一 内 定義 関数 ば 関数 static関数 8.10
8.11 R8.7 R8.8
無 前空間 宣言
M2.2.4 関連 定数 定義 #define や const 定数 enum 使
用
M2.2.5 ン private 11-0-1
[保守性 ] M2 修 誤 い う 書 方
M2.1 M1.6
EXP39-C 9-5-1
EXP20-C
M2.2 M1.3
M1.9
M1.8.2 16-2-2 PRE10-C
M1.8
M1.11
EXP39-C CWE-119
CWE-188
M2.2.2 DCL15-C
DCL19-C
M2.2.3 DCL15-C
DCL19-C 領域 1 利用目的 使用
前を再使用 い
勘違い や い言語仕様を使用 い
M1.6.2
M1.7 M1.5 M1.4
M1.7.1
2-10-2 2-10-3 2-10-4 2-10-5 2-10-6
DCL01-C DCL23-C
M1.5.2 5-0-13
特 書 方 意 を明示
領域 属性 明示
構造化さ タや ッ
を明確化
セ 範 や関連 タ 局所化
演算 実行順序 分 や い う 記述
省略 誤解を招 や い演算 明示的 記述
C:2004 C:2012 C++:2008 MISRA 関係
CERT C CWE
CERT C++
作 法 詳 細
M3.1.1 繰返 文 終了 break文 使用 最大 1
留 ば い
14.6 R15.4 6-6-4
goto 文 使用 い 14.4 R15.1
goto 文 使用 場合 飛び先 goto 文
内 goto 文 後方 宣言 い
R15.2 R15.3
M3.1.3 continue 文 使用 い 14.5 6-6-3 番
switch 文 case 節 default 節 必 break文 終了 15.2 R16.3
switch 文 case 節や default 節 break 文 終了 い場合
ン 規定 そ ン 挿入
関数 return 文 終了 14.7 R15.5
処理 途中 復帰 return 文 異常復帰 場合
ン 式 使用 い 12.10 R12.3
ン 式 for 文 初期化式や更新式 外 使用 い
M3.2.2 文 入 複数記述 い 値 複数 変数 入
場合 除く
M3.3.1 for 文 式 制御 わ 記述
ば い
13.5 R14.2
M3.3.2 for 中 繰返 ン 用い 数値変数
体内 変更 い
13.6 R14.2 6-5-3 6-5-5
真偽 求 式 中 入演算子 使用 い 13.1 R13.4
真偽 求 式 中 入演算子 使用 い 慣習的 使う表現 除く
M3.4 複雑 ンタ演算 使用
い
M3.4.1 段階 ン 指定 使用 い 17.5 R18.5 5-0-19
M3.5 複雑 構造 使用 い M3.5.1
階層構造 可能 基底 仮想 承 非仮想 承 混在 い
10-1-3
M4.1.1 波括弧 {}や 空白 入 方 関 規約
規定
M4.1.2 キ C++ 使用 void キ 許 5-2-4
M4.2 コ ン 書 方を統一 M4.2.1
ン 関数 ン 行 ン ン
書 方 関 規約 規定
MSC04-C
M4.3.1 外部変数内部変数 関 規約 規定
DCL02-C DCL16-C MSC09-C
M4.3.2 関 規約 規定
PRE04-C MSC09-C
M4.4.1 記述 内容宣言 定義等 そ 記述 序 規定
M4.4.2 記述 内容宣言 定義等 そ 記述 序 規定
8.6
M4.4.3 外部変数や関数 内 使用 関数 除く 使用 定
義 場合 宣言 記述 ン
8.8 R8.5 3-3-1
DCL36-C DCL40-C EXP37-C
DCL40-C EXP37-C
CWE-628 CWE-686
M4.4.4 外部変数 複数箇所 定義 い DCL36-C C版
M4.4.5 変数定義や関数定義 記述 い C版
M4.4.6 重複取 込 耐えう 作 そ 記述
方法 規定
19.15 D4.10 16-2-3 PRE06-C
M4.4.7
#include 前や 内 using指 や
前空間 using宣言 記述 い や関数
using 宣言 記述 場合 除く
7-3-5 7-3-6
M4.4.8 ン 記述 序 規定
関数 宣言 引数 前 付 い型
関数 宣言 引数 前 付
引数 型 前及び戻 型 関数定義 通
構造体 宣言 変数 宣言 々 行う
列挙 定義 変数 宣言 々 行う
構造体共用体配列 初期値式 及び列挙子 最
後 } 前 , 記述 い
構造体共用体配列 初期値式 及び列挙子 最
後 } 前 , 記述 い 配列 初期化 初
期値 最後 } 前 , 書く 許
ン 0 使用 NULL い 場合 使用
い
ン NULL 使用 NULL ン 外
使用 い
M4.7.1 演算子 含 体 引数 括弧 19.10 R20.7 16-0-6
PRE01-C PRE02-C
M4.7.2 #ifdef #ifndef #if 対応 #elseや#endif 一 内 記
述 規定 ン 入 対応関係 明確
19.17 R20.14 16-1-2
M4.7.3 #if や #elif 定義済 調 場合 defined (
) defined 定義済 調
16-0-7
M4.7.4 #ifや#elif 使 用 defined演 算 子 defined
defined いう書 方 外 書 い
19.14 16-1-1 番
M4.7.5 内 #define #undef い 19.5 16-0-2
M4.7.6 #undef 使用 い 19.6 R20.5 16-0-3
M4.7.7 #if #elif 前処理指 制御式 0 1 評価 ば
い
R20.8 M3.1
M3.3
EXP45-C M3.2.1
M3.1.4 6-4-5 MSC17-C
3-9-1
8-4-2 API08-C
M4.5.3 M4.5
M3.1.2 6-6-2
R8.2 R8.3 M3.2
M4.6.1
M3.3.3 6-2-1
[保守性 ] M3 ン 書く
EXP45-C CWE-480
M4.5.2
M4.7
5-18-1
構造化 ン を行う
1 文 1 副作用
目的 違う式 分離 記述
M3.1.5 6-6-5
4-10-1 4-10-2 M4.6
[保守性 ] M4 統一 書 方
M4.1
M4.3
M4.4
M4.5.1 16.3
16.4
コ ン タ を統一
前 付け方を統一
内 記述内容 記述順序
を統一
宣言 書 方を統一
ンタ 書 方を統一
C:2004 C:2012 C++:2008 MISRA 関係
CERT C CWE
CERT C++
作 法 詳 細
M4.8.1 演算子 演算子 来 意味 類 演算子 併
定義
5-17-1
M4.8.2 対 new delete 定義 場合 標準 提供 い
形式 定義
M4.8.3 new delete 対 定義
DCL54-CPP MEM51-CPP
CWE-590 CWE-415 CWE-404 CWE-762
M5.1.1 ョン設定時 ン 方法 ュ
ン 方法 規定
DCL03-C ERR06-C MSC11-C
前処理演算子 # ## 使用 い 19.13 R20.10
# 演算子 直後 く 直後 ## 演算子
い
19.12 R20.11
M5.1.3 関数形式 ン ン関数 使用 19.7 D4.9 16-0-4 PRE00-C
動的 使用 い 20.4
R21.3 D4.12
動的 使用 場合 使用 量 限 不
足 場合 処理 及び 方法等 規定
言語標準 規格外 機能 使用 い 1.1
R1.1 R1.2
言語標準 規格外 機能 使用 場合 使用 機能 そ 使い方 文書化
P1.1.2 使用 処理系定義 動作 文書化 ば い 3.1 D1.1
P1.1.3 言語 書 利用 場合 そ ン 文
書化 使用方法 規定
1.3 D1.1 1-0-2 EXP56-CPP
P1.2.1 記述 い 言語 規格 規 定 い 文 外 文
使用 場合 ン 様 確認 そ 使い方 規定
3.2 D1.1 2-2-1
P1.2.2 言語規格 定義 い 拡張表記 使用 4.1 R4.1 2-13-1
P1.3.1
単 符号指定 い char 型 文 値 格納処理 使
用 符号 有無処理系定義 依 処理 必要 場合 符号 明記 unsigned char 型 signed char 型 利用
6.1 6.2
R10.1 R10.2 R10.3 R10.4
5-0-11 5-0-12
INT07-C STR00-C STR04-C
P1.3.2 列挙enum体 ン int 型 表現可能 値 定義
使用 い
位置 意識 対 使用
い
処理系定義 動作 キン 依 い 場合 そ 文書化 ば い
3.5 D1.1
P1.4.1 #include 指 後 <filename> "filename" ば い
19.3 R20.3 16-2-6
P1.4.2 #include 指定 <> 形式 " " 形式 使い 方 規定
19.3 R20.3
P1.4.3 #include 指定 文 ' \ " /* // 及び : 使用 い
19.2 R20.2 16-2-4 16-2-5
P1.5.1 #include 指定 絶対 記述 い
P1.5.2 型や変数 sizeof 使 求
P2.1.1
C言語 ン 言語 び出 場合 ン ン
ン 言語 含 C言語 関数や ン ン関数 表現 記述 局所化 方法 規定
2.1 D4.2
D4.3 7-4-3
P2.1.2 処理系 拡張 い キ ワ 規定 局所化 使
用
char int long long long float double 及び long double いう
基 型 使用 い わ typedef 型 使用
利用 typedef 型 規定
char int long long long float double 及び long double い
う基 型 そ 依 形式 使用 場合 各基
型 typedef 型 使用 利用 typedef
型 規定
E1.1.1 関数 速度性能 わ 部 内 閉 使用 PRE00-C
E1.1.2 繰返 処理内 変化 い処理 行わ い
E1.1.3 関数 引数 構造体 く構造体 ン 使用
E1.1.4 switch 文 if 文 可読性 効率性 考え 選択方針
決定 規定
E1.1.5 変数定義関数定義 記述 い 8.5 3-1-1 DCL59-CPP
E1.1.6 ン 初期化 ン 初期化子 使う
E1.1.7 暗黙 型変換 起 い う 型 対応 関数
定義
E1.1.8 ン ン 演算子 ン 演算子 前置形式 使う
E1.1.9 仮想 承 基底 持 多重 承 い 場合 使
用 良い
10-1-2
E1.1.10 ン 定義中 ン 仮引数 関係 無いコ
を書 い M4.8
[効率性 ] E1 資源や時間 効率 考慮 書 方 [移植性 ] P2 移植性 問題 あ 局所化
9-6-1 EXP11-C
P1.4
D4.6 P1.3
タ型 表現 動作仕様 拡張
機能 及び処理系依 部分を確認
文書化
移植性 問題 あ コ 局所 化
資源や時間 効率を考慮 書 方
E1.1 P1.5
1-0-1
P1.1
P1.2
PRE05-C M5.1
言語規格 定義さ い 文 や 拡張表記 を使用
EXP53-CPP EXP54-CPP MEM30-C MEM31-C MEM35-C MEM50-CPP MEM51-CPP MEM52-CPP
M5.1.2 16-3-1
16-3-2
P2.1.3 6.3 3-9-2
P2.1
[保守性 ] M5 試験 や い書 方
18-4-1
EXP33-C MEM30-C MEM31-C MEM35-C CON30-C
CWE-119 CWE-131 CWE-190 CWE-401 CWE-404 CWE415 CWE-416 CWE-467 CWE-590 CWE-665 CWE-762
M5.2 M5.2.1
P1.1.1
P1.3.3 [移植性 ] P1 ン 依 い書 方
書 方を統一
ソ 取 込 い
処理系依 部分を確認 依
い書 方
コン 環境 依 い書 方
問題発生時 原因を調査 や い 書 方
動的 割 当 使用 気 を付け
C:2004 C:2012 C++:2008 MISRA 関係
CERT C CWE
CERT C++
作 法 詳 細
例 実行 い文 記述
例 実行結果 使用 い文 記述
例 実行結果 使用 い式 記述
例 実引数 渡 値 使用 い
例 誤 範 指定
例 範 外 比較
例 文 列 比較 == 演算 行え い
例 関数 型 return 文 不整合 MSC37-C
例 ン 加減算 誤 ARR39-C
例 配列 範 外 参照更新 ARR30-C
例 自動変数 領域 出 元 渡 う誤
DCL21-C DCL30-C EXP35-C MEM30-C
例 動的 解放後 参照 MEM30-C
例 文 列 書 込 誤 STR30-C
例 複写 指定誤
例 論理和 論理積 誤
例 論理積 論理和 誤
例 論理演算 演算 誤
EXP17-C EXP46-C
タ 誤 例 演算子 記述 = 演算子 記述 EXP45-C
例 多重定義
例 const 領域 書 込 誤
組込 あ ン
意味 い式や文
誤 式や文
誤 使用
論理演算 勘違い 誤
6 コン