MISRA C:2012 Example-Suite
https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite
コンパイル完了までの道のり
<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words in order.
道のり1. docker の導入
下記、docker コマンドで[user]を実際のフォルダ名で実行。まず、GCCでコンパイルすることを考えてGCCの正規版を導入。
$ docker run -v /Users/[user]/Downloads/misra:/tmp/misra -it gcc /bin/bash
PC側のエディタ使って編集するのでフォルダを共有してます。
道のり2 ダウンロード
# cd /tmp/misra
# git clone https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite.git
# cd Example-Suite/
3. 道のり3 Clang(llvm)導入
あとからでもいいけど、導入しながら別の作業をできる。
# apt update; apt -y upgrade
# apt install -y vim wget sudo apt-utils curl clang
4. 構造調査
ファイル名一覧
D_01_01.c D_01_support.c D_01_system.c D_02_01.c D_02_support.c D_02_system.c D_03_01.c D_03_support.c D_03_system.c D_04_01.c D_04_01.h D_04_02.c D_04_03.c D_04_04.c D_04_05.c D_04_06.c D_04_07.c D_04_08.h D_04_08_1.c D_04_08_2.c D_04_09.c D_04_10.c D_04_10_1.h D_04_10_2.h D_04_10_3.h D_04_11.c D_04_12.c D_04_13.c D_04_13.h D_04_14.c D_04_support.c D_04_system.c README.md R_01_01.c R_01_02.c R_01_03.c R_01_support.c R_01_system.c R_02_01.h R_02_01_1.c R_02_01_2.c R_02_02.c R_02_02.h R_02_03.c R_02_03.h R_02_04.c R_02_04.h R_02_05.c R_02_05.h R_02_06.c R_02_07.c R_02_support.c R_02_system.c R_03_01.c R_03_02.c R_03_support.c R_03_system.c R_04_01.c R_04_02.c R_04_support.c R_04_system.c R_05_01.h R_05_01_1.c R_05_01_2.c R_05_02.c R_05_03.c R_05_03.h R_05_04.c R_05_05.c R_05_06.c R_05_06.h R_05_07.c R_05_07.h R_05_08.h R_05_08_1.c R_05_08_2.c R_05_09.h R_05_09_1.c R_05_09_2.c R_05_support.c R_05_system.c R_06_01.c R_06_02.c R_06_support.c R_06_system.c R_07_01.c R_07_02.c R_07_03.c R_07_04.c R_07_04.h R_07_support.c R_07_system.c R_08_01.c R_08_02.c R_08_03.c R_08_03.h R_08_04.c R_08_04.h R_08_05.h R_08_05_1.c R_08_05_2.c R_08_06.h R_08_06_1.c R_08_06_2.c R_08_07.h R_08_07_1.c R_08_07_2.c R_08_08.c R_08_09.c R_08_09.h R_08_10.c R_08_11.h R_08_11_1.c R_08_11_2.c R_08_12.c R_08_13.h R_08_13_1.c R_08_13_2.c R_08_14.c R_08_support.c R_08_system.c R_09_01.c R_09_01.h R_09_02.c R_09_03.c R_09_04.c R_09_05.c R_09_support.c R_09_system.c R_10_01.c R_10_02.c R_10_03.c R_10_04.c R_10_04.h R_10_05.c R_10_06.c R_10_07.c R_10_08.c R_10_support.c R_10_system.c R_11_01.c R_11_02.c R_11_03.c R_11_04.c R_11_05.c R_11_06.c R_11_07.c R_11_08.c R_11_09.c R_11_support.c R_11_system.c R_12_01.c R_12_01.h R_12_02.c R_12_02.h R_12_03.c R_12_04.c R_12_05.c R_12_support.c R_12_system.c R_13_01.h R_13_01_1.c R_13_01_2.c R_13_02.c R_13_02.h R_13_03.c R_13_04.c R_13_05.h R_13_05_1.c R_13_05_2.c R_13_06.c R_13_support.c R_13_system.c R_14_01.c R_14_01.h R_14_02.c R_14_02.h R_14_03.c R_14_03.h R_14_04.c R_14_support.c R_14_system.c R_15_01.c R_15_02.c R_15_03.c R_15_04.c R_15_04.h R_15_05.c R_15_06.c R_15_06.h R_15_07.c R_15_07.h R_15_support.c R_15_system.c R_16_01.c R_16_02.c R_16_03.c R_16_04.c R_16_05.c R_16_06.c R_16_07.c R_16_support.c R_16_system.c R_17_01.c R_17_02.c R_17_02.h R_17_03.c R_17_04.c R_17_05.c R_17_05.h R_17_06.c R_17_07.c R_17_08.c R_17_08.h R_17_support.c R_17_system.c R_18_01.c R_18_01.h R_18_02.c R_18_02.h R_18_03.c R_18_03.h R_18_04.c R_18_05.c R_18_06.h R_18_06_1.c R_18_06_2.c R_18_07.c R_18_08.c R_18_support.c R_18_system.c R_19_01.c R_19_01.h R_19_02.c R_19_support.c R_19_system.c R_20_01.c R_20_01.h R_20_02.c R_20_03.c R_20_03.h R_20_04.c R_20_05.c R_20_06.c R_20_07.c R_20_08.c R_20_09.c R_20_10.c R_20_11.c R_20_12.c R_20_13.c R_20_14.c R_20_14_1.h R_20_14_2.h R_20_support.c R_20_system.c R_21_01.c R_21_02.c R_21_03.c R_21_04.c R_21_05.c R_21_06.c R_21_07.c R_21_08.c R_21_09.c R_21_10.c R_21_11.c R_21_12.c R_21_13.c R_21_14.c R_21_14.h R_21_15.c R_21_16.c R_21_17.c R_21_18.c R_21_19.c R_21_20.c R_21_support.c R_21_system.c R_22_01.c R_22_01.h R_22_02.c R_22_02.h R_22_03.c R_22_03.h R_22_04.c R_22_04.h R_22_05.c R_22_05.h R_22_06.c R_22_06.h R_22_07.c R_22_08.c R_22_09.c R_22_10.c R_22_support.c R_22_system.c mc3_header.h mc3_types.h
cat D_01_system.c
/*
- Release: 2016-11-01
- Example from MISRA C:2012 ( THIS IS NOT A TEST SUITE )
- Copyright HORIBA MIRA Limited.
- See file READ_ME.txt for full copyright, license and release instructions.
*/
#include "mc3_types.h"
#include "mc3_header.h"
int main ( void )
{
D_1_main_support ( );
return 0;
}
/* end of D_01_system.c */
xx_system.cをコンパイルして実行すればいいらんしい。
# 5. shell script作成
makeでもいいが、ひとまずshellで。
# 6. misra_c.h編集
これまでMISRAのコード断片や、C、C++の言語規格のコード断片をコンパイルするのに用いてきたヘッダファイルをvi で編集。
MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
# 途中経過
一つづつMISRAが作成した直したソースは別に解説します。
docker(201) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(1) D_04_03.c
https://qiita.com/kaizen_nagoya/items/780be9109348340e20e0
docker(202) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(2) R_02_02.c
https://qiita.com/kaizen_nagoya/items/496869b87dd3d29cea8b
docker(203) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(3) R_05_03.c
https://qiita.com/kaizen_nagoya/items/cb0d1da183f4f1e9e59d
docker(204) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(4) R_07_04.c
https://qiita.com/kaizen_nagoya/items/73b9f16638273a74d807
docker(205) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(5) R_08_04.c
https://qiita.com/kaizen_nagoya/items/c753db14cc95a9303fa5
docker(206) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(6) R_09_0x.c
https://qiita.com/kaizen_nagoya/items/8ad38c8728440688255c
docker(207) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(7) R_10_0x.c
https://qiita.com/kaizen_nagoya/items/05dd6f6c14aeafbe3e71
docker(208) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(8) R_11_0x.c
https://qiita.com/kaizen_nagoya/items/9962647a1b510825fa6e
docker(209) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(9) R_13_0x.c
https://qiita.com/kaizen_nagoya/items/dcd2de1267e3c3449536
docker(210) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(10) R_14_0x.c
https://qiita.com/kaizen_nagoya/items/772f49486e7cca1dbeb9
gcc(gnu), clang(llvm)コンパイルエラー・警告比較(12) R_17_03.c, docker(165) error(50) https://qiita.com/kaizen_nagoya/items/f85e29050b99ea1c2538
# 道のり最後
作業結果をDocker hubに
```shell-session:macOS
$ docker push kaizenjapan/misra_c_2012_example
道のり最後の翌日
翌日続きをするには
$ docker run -v /Users/[user]/Downloads/misra:/tmp/misra -it kaizenjapan/misra_c_2012_example /bin/bash
MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
環境構築
docker gcc(g++) and llvm(clang++)
https://qiita.com/kaizen_nagoya/items/059874ea39c4de64c0f7
docker(40) Cコンパイラ3種をdockerで(その2)
https://qiita.com/kaizen_nagoya/items/8f5b7fd977597269a7e7
Preface
February 2020,
MISRA Compliance:2020
https://www.misra.org.uk/forum/viewtopic.php?f=241&t=1842
ISBN 978-1-906400-26-2
was published as second version.
August 2016,
MISRA Compliance:2016
https://www.misra.org.uk/forum/viewtopic.php?f=241&t=1561
was published first version.
I compare 2 documents and consider the difference.
And some propose are proposed.
Contents
Preface
Contents
Before MISRA
MISRA history
Comparison of MISRA Compliance:2016 and 2020
Before MISRA
#MISRA history
Comparison 2016 and 2020
2020 word list
word | 語 | count |
---|---|---|
the | その | 842 |
of | の | 433 |
to | に | 376 |
a | a | 369 |
be | なる | 265 |
and | そして | 223 |
is | です | 222 |
in | に | 209 |
code | 富豪 | 163 |
for | ために | 135 |
that | それ | 133 |
guidelines | 指針 | 115 |
are | は | 114 |
as | なので | 108 |
it | それ | 99 |
by | 沿って | 97 |
misra | MISRA | 96 |
with | と | 95 |
compliance | 順守 | 91 |
may | 五月 | 88 |
guideline | 指針 | 87 |
which | どれ | 80 |
or | または | 79 |
this | この | 75 |
not | ない | 74 |
deviation | 偏差 | 71 |
an | の | 63 |
tool | 道具 | 59 |
process | 処理する | 58 |
project | 事業 | 58 |
analysis | 分析 | 56 |
required | 必須 | 53 |
adopted | 採用 | 52 |
compiler | コンパイラ | 52 |
will | 意志 | 51 |
any | どれか | 48 |
been | である | 48 |
on | 上に | 47 |
rule | 規則 | 47 |
have | 持ってる | 44 |
use | 使用する | 42 |
can | できる | 41 |
development | 開発 | 41 |
there | そこ | 40 |
within | 以内に | 40 |
software | ソフトウェア | 39 |
violations | 違反 | 39 |
when | いつ | 38 |
deviations | 偏差 | 37 |
should | すべき | 37 |
c | c | 36 |
has | 持っている | 36 |
possible | 可能 | 36 |
tools | 道具 | 36 |
time | 時間 | 35 |
example | 例 | 34 |
if | もし | 34 |
language | 言語 | 34 |
used | 中古 | 34 |
re | 再 | 31 |
requirements | 要件 | 30 |
acquirer | 取得者 | 29 |
these | これら | 29 |
some | いくつか | 27 |
static | 静的 | 27 |
such | そのような | 27 |
supplier | 供給者 | 27 |
compliant | 準拠 | 26 |
from | から | 26 |
advisory | 助言 | 25 |
but | だが | 25 |
quality | 品質 | 25 |
violation | 違反 | 25 |
mandatory | 必須の | 23 |
must | しなければならない | 23 |
standard | 標準 | 23 |
at | で | 22 |
source | 源 | 22 |
system | 系 | 22 |
all | すべて | 21 |
document | 資料 | 20 |
following | 以下 | 20 |
iso | iso | 19 |
only | のみ | 19 |
order | 注文 | 19 |
other | その他の | 19 |
shall | する | 19 |
behaviour | 動作 | 18 |
categorized | 分類済 | 18 |
category | 分類 | 18 |
developed | 発展した | 18 |
each | 各 | 18 |
grp | grp | 18 |
level | 水準 | 18 |
library | 図書館 | 18 |
no | 番号 | 18 |
section | 節 | 18 |
where | どこ | 18 |
being | であること | 17 |
native | 生来の | 17 |
need | 必要 | 17 |
organization | 組織 | 17 |
record | 記録 | 17 |
scope | 範囲 | 17 |
also | また | 16 |
between | の間に | 16 |
defined | 定義された | 16 |
permits | 許可 | 16 |
plan | 予定 | 16 |
their | 彼らの | 16 |
they | 彼ら | 16 |
type | 型 | 16 |
would | するだろう | 16 |
applied | 適用済 | 15 |
b | b | 15 |
different | 違う | 15 |
does | する | 15 |
iec | iec | 15 |
issues | 問題 | 15 |
metrics | 測定基準 | 15 |
permit | 許可 | 15 |
rules | 規則 | 15 |
safety | 安全性 | 15 |
therefore | したがって | 15 |
both | 両方とも | 14 |
case | 場合 | 14 |
enforcement | 執行 | 14 |
ensure | 確保する | 14 |
many | たくさんの | 14 |
more | もっと | 14 |
permitted | 許可済 | 14 |
s | s | 14 |
systems | 系 | 14 |
validation | 検証 | 14 |
comply | 従う | 13 |
disapplied | がっかりした | 13 |
however | しかしながら | 13 |
implementation | 実装 | 13 |
means | 手段 | 13 |
one | 1 | 13 |
same | 同じ | 13 |
appendix | 付録 | 12 |
bit | 二進数 | 12 |
categorization | 分類 | 12 |
during | 中に | 12 |
header | ヘッダ | 12 |
necessary | 必要 | 12 |
object | 対象 | 12 |
style | 形 | 12 |
approved | 承認された | 11 |
cannot | できない | 11 |
cases | 事件 | 11 |
coding | コーディング | 11 |
configured | 構成済み | 11 |
described | 説明した | 11 |
documentation | 文書化 | 11 |
expression | 表情 | 11 |
files | ファイル | 11 |
identified | 識別された | 11 |
information | 情報 | 11 |
its | その | 11 |
made | 製 | 11 |
provide | 提供する | 11 |
provided | 提供 | 11 |
review | 見直し | 11 |
security | 安心 | 11 |
staff | 要因 | 11 |
those | それら | 11 |
translation | 翻訳 | 11 |
appropriate | 適切な | 10 |
available | 利用可能 | 10 |
developer | 開発者 | 10 |
essential | 必須 | 10 |
even | さえ | 10 |
file | ファイル | 10 |
important | 重要 | 10 |
make | 作る | 10 |
messages | 伝言 | 10 |
multiplication | 乗算 | 10 |
non | 非 | 10 |
note | 注意 | 10 |
operands | 被作用子 | 10 |
processes | 過程 | 10 |
reason | 理由 | 10 |
records | 記録 | 10 |
result | 結果 | 10 |
reviewed | 審査 | 10 |
then | その後 | 10 |
undecidable | 決定できない | 10 |
using | を使用して | 10 |
version | 版 | 10 |
wider | 広い | 10 |
without | なし | 10 |
additional | 追加 | 9 |
apply | 適用する | 9 |
checking | 確認する | 9 |
control | 制御 | 9 |
functional | 機能的 | 9 |
gcs | gcs | 9 |
how | どうやって | 9 |
international | 国際 | 9 |
macro | 大きい | 9 |
management | 管理 | 9 |
produced | 生産済 | 9 |
product | 製品 | 9 |
programming | プログラミング | 9 |
run | 走る | 9 |
violated | 違反した | 9 |
analyser | 分析者 | 8 |
associated | 関連 | 8 |
checked | 検査済み | 8 |
checks | 検査 | 8 |
claim | 請求 | 8 |
compilers | コンパイラ | 8 |
composite | 複合 | 8 |
do | 行う | 8 |
e | e | 8 |
every | 毎 | 8 |
form | 形 | 8 |
given | 所与 | 8 |
introduced | 導入 | 8 |
message | 伝言 | 8 |
might | かもしれない | 8 |
number | 数 | 8 |
part | 部 | 8 |
practice | 練習 | 8 |
produce | 作物 | 8 |
provides | 提供する | 8 |
set | 設定する | 8 |
single | 単一 | 8 |
standardization | 標準化 | 8 |
standards | 規格 | 8 |
step | 一歩 | 8 |
summary | 概要 | 8 |
supported | 支援済 | 8 |
two | 二 | 8 |
value | 値 | 8 |
various | いろんな | 8 |
versions | 版 | 8 |
activities | 活動 | 7 |
agreement | 契約 | 7 |
binary | 二進の | 7 |
check | 小切手 | 7 |
correct | 正しい | 7 |
could | たぶん......だろう | 7 |
define | 定義する | 7 |
dir | dir | 7 |
documents | 書類 | 7 |
execution | 実行 | 7 |
extensions | 拡張 | 7 |
function | 関数 | 7 |
include | 含む | 7 |
into | に | 7 |
ltd | 株式会社 | 7 |
most | 最も | 7 |
nature | 自然 | 7 |
options | 選択肢 | 7 |
performance | 実績 | 7 |
program | プログラム | 7 |
providing | 提供 | 7 |
related | 関連した | 7 |
report | 報告する | 7 |
require | 必要とする | 7 |
risk | 危険 | 7 |
see | 見る | 7 |
significant | 重要な | 7 |
situations | 状況 | 7 |
size | 大きさ | 7 |
so | そう | 7 |
specified | 指定済 | 7 |
support | 支援 | 7 |
task | 仕事 | 7 |
testing | 試験 | 7 |
training | 訓練 | 7 |
uint | uint | 7 |
well | 上手 | 7 |
whether | かどうか | 7 |
written | 記録済 | 7 |
approach | やり方 | 6 |
because | なぜなら | 6 |
capable | 有能な | 6 |
circumstances | 状況 | 6 |
claimed | 主張した | 6 |
classification | 分類 | 6 |
clearly | はっきりと | 6 |
consider | 検討する | 6 |
design | 設計 | 6 |
diagnosis | 診断 | 6 |
directive | 指令 | 6 |
effort | 努力 | 6 |
errors | 謝り | 6 |
exactly | 丁度 | 6 |
examples | 例 | 6 |
f | f | 6 |
guide | 手引き | 6 |
horiba | 堀場 | 6 |
implement | 実装する | 6 |
included | 含む | 6 |
likely | たぶん | 6 |
limited | 限定的 | 6 |
list | 一覧 | 6 |
mira | MIRA | 6 |
outside | 外側 | 6 |
over | 以上 | 6 |
particular | 特に | 6 |
performed | 実行した | 6 |
phase | 段階 | 6 |
place | 場所 | 6 |
references | 参照 | 6 |
simply | 単に | 6 |
since | 以来 | 6 |
sometimes | 時々 | 6 |
specific | 明確な | 6 |
t | t | 6 |
taken | 取った | 6 |
than | より | 6 |
types | 型 | 6 |
understanding | 理解 | 6 |
unit | 単位 | 6 |
FALSE | 偽 | 6 |
自己参照
Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794
Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0
線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001
C++ Support(0)
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514
Coding Rules(0) C Secure , MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0
Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76
Error一覧(C/C++, python, bash...) Error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8
なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2
言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4
プログラムちょい替え(0)一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394
一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
小川清最終講義、小川清最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
文書履歴(document history)
ver. 0.01 add URL 20240514
最後までおよみいただきありがとう4ざいました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.