Misra Example Suite at docker コンパイル完了までの道のり。docker(154) error(56)

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の正規版を導入。

```shell-session:macOS 
$ docker run -v /Users/[user]/Downloads/misra:/tmp/misra -it gcc /bin/bash

```

PC側のエディタ使って編集するのでフォルダを共有してます。

# 道のり２ ダウンロード

```
# cd /tmp/misra
# git clone https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite.git
# cd Example-Suite/
```
# 3. 道のり３　Clang(llvm)導入
あとからでもいいけど、導入しながら別の作業をできる。

```shell-session:docker
# 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
```

```c: 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
```

# 道のり最後の翌日
翌日続きをするには

```shell-session:macOS
$ docker run -v /Users/[user]/Downloads/misra:/tmp/misra -it kaizenjapan/misra_c_2012_example /bin/bash
```

MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

# 環境構築
docker gcc(g++) and llvm(clang++)
https://qiita.com/kaizen_nagoya/items/059874ea39c4de64c0f7

docker(40) Cコンパイラ３種をdockerで(その２）
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.