MISRA C:2023について知っておくべきこと

1.はじめに

C言語向けガイドラインMISRA C:2012におけるルールや指令の新規追加、および内容のアップデートであるMISRA C:2012 Amendment 4が2023年の3月に発行されました。さらに、MISRAの誕生25周年の節目にMISRA C:2023が2023年の4月に発行されました。MISRA C:2023は新しいコーディングガイドラインではなく、MISRA C:2012 Amendment1~4とTechnical Corrigenda1、2を統合したものです。

2024年4月にリリースした新版「C/C++test 2023.2」では、MISRA C:2012 Amendment 4にも「完全対応」し、MISRA C:2023のガイダンスとコンプライアンスレポートにも対応しております。

本書では、MISRA C:2023を構成している

  • MISRA C:2012の概要
  • MISRA C:2012 Amendment1~4
    ・特に最新のAmendment 4については、拡張内容とアップデートの詳細
  • MISRA C:2012 Technical Corrigenda1、2

を中心にご紹介します。また、MISRA C:2012規格の拡張である3つのAddendum、1つのPermits、そして2つのComplianceについても併せて説明します。

2.MISRA C:2012

MISRAとは

Motor Industry Software Reliability Association (MISRA) とは、英国に本拠地を置く自動車関連ソフトウェアの業界団体であり、セーフティ クリティカルなシステムのためのソフトウェア コーディングのガイドラインを発行しています。 MISRAの主な目的は、車載ソフトウェアの開発において、C言語の実用性を確保しつつ、安全性、信頼性、移植性を確保したプログラミング手法を促進することです。しかし、今日では車載ソフトウェアに留まらず、航空宇宙・防衛、医療システム、産業オートメーションなどの安全性が不可欠である幅広い産業で適用されています。
MISRA C:2012自体は既に公開から10年が経っていますが、さまざまな拡張文書によって継続的にアップデートされてきました。

MISRA C:2012 規格の拡張

MISRA C:2012は何年にもわたって以下の補足文書によって補強されてきました。4つのAmendment、2つのTechnical Corrigendum、3つのAddendum、1つのPermits、そして2つのComplianceプロセスおよびレポートに関する文書があります。どれも、規格を拡張する文書です。
AmendmentとCorrigendumの内容は、MISRA C:2023へも引き継がれます。addendum、Permits、Complianceは独立した文書として引き続き使用されます。

表1
表1

MISRA C:2012 Addendum

MISRA Addendumは、MISRA C:2012と他のコーディングガイドライン間のマッピングを提供します。これまでに、3つの Addendumがリリースされました。

  • Addendum1︓MISRA C 2004へのマッピング
  • Addendum2︓Secure Cへのマッピング
  • Addendum3︓SEI SERT Cへのマッピング

ビジネス上の必要性によって複数のコーディング基準に準拠する必要がある場合、またはMISRA C:2004からMISRA C:2012に移行する場合、 Addendumが非常に役立ちます。Addendumを利用するとガイドライン間の差分を把握し、ガイドラインを追加する必要があるか、それとも MISRA C:2012だけで十分かを判断するのが容易になります。

MISRA C:2012 Permits

MISRA Permitsは、標準から逸脱する場合に非常に便利です。 MISRA Permitsには、よくあるユースケース、つまり特定のルールのコンテキストにおいて標準からの逸脱を許容できる典型的な構文が記載されています。ただし、無条件の逸脱許可ではありません。最終的な判断は、常に特定のプロジェクトのコンテキストで下す必要があります。また、逸脱許可はできればプロジェクト開始時に評価し、協議するべきです。

さらに、MISRA Permitsは、「逸脱の理由」、「背景」、「要件」に関する情報が豊富にあります。このあらかじめ定義された情報を利用すると、逸脱レポートの作成が非常に簡略化され、準拠プロセスにかかる時間とコストを大幅に節約できます。勿論ユーザー固有の逸脱許可を作成することもできます。

MISRA C:2012 Permitsは、MISRA C:2023でも引き続き使用可能であり、これらの許可を無効にするようなガイドラインの変更はありません。

MISRA Compliance

MISRA Complianceはこれまでに2つのドキュメントが発行されています。

  • MISRA Compliance: 2016
  • MISRA Compliance: 2020

MISRA Complianceは、MISRA準拠とは何を意味するか、つまり準拠プロセスの必須要素を明確化、または定義するものです。MISRA Complianceは、逸脱手続きを定義し、可能なガイドラインの再分類に関するガイドを提供し、MISRA 準拠を主張するためにまとめる必要があるレポートのサンプルを示します。
また、重要な点は Amendment 2以降、MISRA Complianceで示されたガイドがMISRA C:2012準拠に必須であることです。

MISRA C:2012 Technical Corrigendum

MISRA Technical Corrigendumは、標準の利用者から報告された問題を解決するためにリリースされました。
主な目的は以下を示すことです。

  • ガイダンスの説明の補足
  • ルールおよび指令の追加の例外
  • 一部ガイドラインのカテゴリの変更

つまり、ガイドライン テキストの細かい修正や本質的な明確化、例えば「ガイドラインの適用に関して、あるルールが可変長引数関数に適用されるかどうか」といった説明などがあげられます。MISRA C:2012に関して、これまでに2つのTechnical Corrigendumがリリースされています。最新のTechnical Corrigendumは2022年の3月に公開されました。 Technical Corrigendumの内容は、その後の標準の改定に取り込まれるのが通常です。

MISRA C:2012 Amendment

MISRA Amendmentはこれまでに4つの Amendmentがリリースされています。

  • Amendment 1 : セキュリティ対応
  • Amendment 2 : C11 規格に対応
  • Amendment 3 : C11, C18 規格への拡張対応
  • Amendment 4 : C11, C18 規格への拡張対応

通常MISRA Amendmentは新規ルールおよび指令を含む、大幅なアップデートです。
Amendment1は、セキュリティのための追加ガイドラインを示し、 Amendment 2は、C11規格向けに標準を拡張する最初の試みです。また、Amendment 3はこの試みを継続し、C11とC18の言語拡張をカバーするように大幅に改訂されました。さらに、Amendment 4が最後の更新となり、2023年3月23日に発行されました。本対応では、最新のC11とC18の機能の安全な使用を可能にするガイダンスを提供します。

続きは資料DLしてご覧ください。

作成:テクマトリックス株式会社

2024年7月