2017-04-24 6 views
3

私は通常、開発者ではなく木工です。組み込みシステムのC/C++を学んでいるうちに、私のツールを自律的にして、何時間もの繰り返し作業を省くようにしています。個人用プログラムのMISRA-Cコーディングガイドライン?

今のところ、楽しいとうまくいって、私はおそらく百時間をコーディング/ラーニングに費やして、すでに多くの時間を節約しています*。

私はMISRAのコーディング規則に従い、「必須の良いアイデア」を購入し続けていきたいと思っていますか? MISRAには何が含まれていますか?コーディング規則、またはそれをより安全にするヒントの種類のみ?

これらのツールは危険なものになる可能性があります(結局、木材を切って人体の抵抗力ははるかに低くなります...)。

注:私は明らかに4つの段階で私のテストを実行します。

  1. OSD & SDカードロガーを実行しているだけで、PIC(1日、私はanylzeツールを作成し、それらを読んで停止されます)。

  2. は、私は私が緊急停止ボタンに手との良好な距離で実際のテストを行って泡

  3. 上のソフトドリル/カッターを使用

  4. それに何もツールを差し込みます。

また私は唯一の従業員であり、誰も私の職場にアクセスできません。

*今のところ私はドリルを3D木製プリンタ(作業の正確な部分ではない)にし、「カッターボード」を自動化しました。

注2:私はネイティブスピーカーではないので、ツールの名前はおそらくオフです。

+0

MISRAは悪いコードの警告を与えることができますが、それは助けになるかもしれませんが、それは魔法の杖ではありません。あなたは木工**と**開発者であることを開始し、あなたのコードを理解する必要があります。 Cは*未定義の動作*という概念を持っています。これは、そのような欠陥があれば、コードが望むように動作できることを意味します。だから*動作するようなコードを信頼しないでください。あなたが知っている信頼コードのみが動作します。 – user694733

+0

@ user694733それは奇妙かもしれないが、私は本当にコンピュータを信用せず、すべてのコードは私のものだから... ... 30時間のログで期待値の+ 5%のうち1回は出ない。私の質問はもっとあります:Misraのルールは私に良いコードを教えるのに役立つのでしょうか?それとも、彼らは彼らのコスチュームに見せてくれるフラグのようなものですか? –

+0

MISRAはコーディング規則のセットですが、各規則の説明をよく読んで、推奨事項としてください。私。それらがいつ続くのか、彼らがナンセンスであるかを知る。一部のルールでは、コードを使用しない場合よりもコードを安全にすることができます。キャストを必要とするため。 – Olaf

答えて

4

MISRAはもともと自動車産業での使用のために設計されています。 MISRAの義務づける方針に述べた目的は以下のとおりです。

  • は、ソフトウェアに、堅牢で信頼性を持参
  • 安全
  • を確認してください。
  • プロパティのセキュリティと競合する場合は、人間の安全を優先する必要があります。
  • システム設計のランダムおよびシステマティック両方の障害を考慮してください。
  • 障害のないことに頼るだけでなく、堅牢性を実証してください。
  • 製品の設計、製造、操作、保守および廃棄に関する安全上の配慮の適用。

文書は主に、これらの目的を達成しようとするコードのルールベースのアドバイザリ情報で構成されています。 MISRAの文書価格は幾年も下がりましたが、一部の文書はMISRAからオンラインで10ポンド+ VAT(GBP)で購入できます。

しかし、初心者およびアマチュアコーダーとして、私はまずCとC++の知識を強化することをお勧めします。ほとんどの分野において、適切な基準に従うことはしばしば望ましいが、該当する場合は、読者が言語で、また本格的な商業タイプを支配する懸念やプロセスにおいて非常に確かな基礎を持っているという前提で書かれているそれらに書かれたアプリケーション。あなたのワークショップが個人的な目的のためだけであり、あなたの管轄地域の職場の安全を支配する規則に応じて、言語、言語ツール、およびハードウェアをよく理解することで、 MISRAを読み込むよりもそういう段階でコードを書くことができます。

上記のように、繰り返し言い換えれば、MISRAはあなたのコードを保証する何かの魔法の杖や具体的な方法ではありません良い、働き、安全です。良いコードと悪いコードの両方が基準を満たすことができます。あなたがしていることをよく理解しておく前に、MISRAに従うことで、作業場のすべてのケーブルがきちんと固定されていることを保証するのと同じかもしれませんが、それからチゼルで刺します。

+0

だから、今のところそれは必須ではありませんが、ある時点でそれを探すのはいい考えです。また、私は価格を確認し、その問題は間違いありません。 –

+0

必須ではありません。どんなプログラムでもそれに続くことは傷つきませんが、私が知っている主な用途は、企業がそのコードがそのレベルのsafetに準拠していることを実証する必要があるアプリケーションです。実生活の例を考えてみると、間違ってコード化された関数が、1000台の車のブレーキを無効にするべきではないことを意味するかもしれません。 – Toby

+0

ルールの中には実際には悪いコードがあり、 – Olaf

2

MISRA-Cはよく知られている問題とCプログラムからの不完全な動作を除外するように強制する一連のルールです。これは、C言語の「安全なサブセット」であり、不適切な動作や暗黙の型変換などの既知のバグを狙ったルールによって、危険な練習のさまざまな形態を禁止しています。 Cは非常に古い言語であるという利点があります。つまり、すべての言語上の欠陥がよく知られています。

MISRA-Cは、コンパイル時にバグを見つけるためにスタティックコード分析に重点を置いています。これは、私の知る限り、MISRA-C準拠をチェックできるオープンソースの静的コードアナライザツールが存在しないので、心に留めておくべきことです。商用ツールは非常に高価であり、しばしばバグ/偽陽性も多くなる傾向がある。それでも大部分は便利です。

MISRA-Cのみ、Cプログラミングに焦点を当てて、それはEMIに対してカウンタで防御プログラミング、いくつかの形態を強制ないが、暴走コードおよび他の形態、などCPU又はマイクロコントローラの問題に対処していません予期しないプログラムの動作が発生します。

MISRAに準拠していることを実証するために、どのようにキャッチするのかを示す「準拠マトリックス」を作成します(詳細については、&のCを超えるトリックについてはthisを参照してください)。 MISRA-C文書のすべての指令/規則:コンパイラメッセージ、ピアレビュー、静的コード分析など

文書のほとんどの規則はかなり意味がありますが、そうでないものもあります。しかし、MISRA-Cはほとんどのルールから逸脱して、次のいずれかに格付けすることができます:

  • 必須。偏差は許されない。
  • 推奨。ルールに従わない場合、正式な逸脱手続きを呼び出さなければならない。
  • 勧告。正式な逸脱をせずにルールから逸脱することができます。
  • 通常、MISRA-C準拠の作成は、すべてのルールに対応する会社のコーディング標準を確立することによって行われます。それを実装する最も簡単な方法は、この文書では、企業レベルで、従うルールとスキップされるルールを書き留めています。それに応じて静的コード解析フィルタを設定します。

    関連する問題