• 検索結果がありません。

ESCR C・C++MISRA C・C++CERT C・C++CWE 対応表 「組込みソフトウェア開発向けコーディング作法ガイド ESCR[C言語版]」を改訂~ セキュアコーディングへの対応を追加 ~:IPA 独立行政法人 情報処理推進機構

N/A
N/A
Protected

Academic year: 2018

シェア "ESCR C・C++MISRA C・C++CERT C・C++CWE 対応表 「組込みソフトウェア開発向けコーディング作法ガイド ESCR[C言語版]」を改訂~ セキュアコーディングへの対応を追加 ~:IPA 独立行政法人 情報処理推進機構"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

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 内部表現 依 い比較を行

タ型を揃え 演算や比較を行 う

演算精度を考慮 記述

情報損失 危険 あ 演算 使用 い

作 法 詳 細

(2)

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

対象 タ 表現可能 型を使用

ンタ 型 気を付け

宣言 使用 定義 矛盾 無いこ

をコン チ ッ

書 方

領域 大 さを意識 書 方

実行時 可能性 あ

演算 対 を迂回させ

関数呼出 ンタ

(3)

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 動作 気を付け

例外 動作 気を付け

分岐 条件 気を付け 所定 条

件 外 発生 場合 処理を記

評価順序 気を付け

く 用い

共有 法

使用 い記述を さ い

(4)

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

特 書 方 意 を明示

領域 属性 明示

構造化さ タや ッ

を明確化

セ 範 や関連 タ 局所化

演算 実行順序 分 や い う 記述

省略 誤解を招 や い演算 明示的 記述

(5)

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

コ ン タ を統一

前 付け方を統一

内 記述内容 記述順序

を統一

宣言 書 方を統一

ンタ 書 方を統一

(6)

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 ン 依 い書 方

書 方を統一

ソ 取 込 い

処理系依 部分を確認 依

い書 方

コン 環境 依 い書 方

問題発生時 原因を調査 や い 書 方

動的 割 当 使用 気 を付け

(7)

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 コン

参照

関連したドキュメント

“rough” kernels. For further details, we refer the reader to [21]. Here we note one particular application.. Here we consider two important results: the multiplier theorems

If the category P (C) of small presheaves on C is finitely complete, then its K-canonical topology is K-ary and induces the trivial K-ary topology on C, while every small presheaf

Since tournaments and undirected self-complementary circulants are particular cases of directed self-complementary circulants (hence in general C sd (n) ≥ C t (n ) + C su (n)) ,

過少申告加算税の金額は、税関から調査通知を受けた日の翌日以

現行の HDTV デジタル放送では 4:2:0 が採用されていること、また、 Main 10 プロファイルおよ び Main プロファイルは Y′C′ B C′ R 4:2:0 のみをサポートしていることから、 Y′C′ B

Of agricultural, forestry and fisheries items (Note), the tariff has been eliminated for items excluding those that are (a) subject to duty-free concessions under the WTO and

If, as a result of inspection, the item is found not to require approval or licensing based on provisions of laws other than customs-related laws and regulations and also found to

This agreement is expected to promote greater freedom in movement of goods, services, and capital between Japan and Chile, and foster comprehensive economic cooperation,