MISRA C++:2008 / AUTOSAR から MISRA C++:2023への移行

このブログは「Migration from MISRA C++:2008 or AUTOSAR to MISRA C++:2023」を翻訳・一部加筆したものです。

2008年の初版リリース以来、MISRA C++コーディングガイドラインは、C++における信頼性やセーフティクリティカルなソフトウェア開発において事実上の標準となっています。

AUTOSARコーディングガイドラインは、2008年にリリースされたMISRA C++をベースに拡張され、MISRAのルールの一部を維持しつつ、コーディングガイドラインを新しい言語機能や最新のC++の側面に対応させるために新しいルールを追加しています。

最新のMISRA C++:2023では、MISRAとAUTOSARの学習に基づいた新しいルールセットにより、C++の最近の発展を考慮し、ルールの適用性と理解しやすさを向上させています。

新しいリリースが出るたびに、MISRAガイドラインに従う開発者は、MISRAルールセットの異なるバージョン間でどのように移行するかという問題に直面します。

特に、静的コード解析ツールを使用してコンプライアンスを検証する場合、移行には全体的な構成、レポートされるメッセージ、場合によってはトレンドチャートなどのハイレベルな情報の変更が伴います。

Axivion Suiteの場合、規格間の移行はこれらの側面をすべて考慮し、可能な限り自動化されます:

Axivion Suiteは、レガシーコードのメッセージのベースラインを設定し、全体的なコード品質の傾向に関する情報を提供できるように、メッセージの履歴を保持し、広範なレポーティングをサポートします。MISRA C++:2008またはAUTOSARからMISRA C++:2023に移行する場合、このメッセージ履歴を適切かつ可能な限り継続的に維持する必要があります。

基本的に、これはAxivion Suiteが古いメッセージの削除と新しいメッセージの追加を報告するのではなく、メッセージを接続すべきケースを検出しなければならないことを意味します。これは特に、メッセージの追加を見逃すと、メッセージの削除がコード品質の向上と誤解される可能性があるためです。

同時に、マイグレーションによって追加されたメッセージは、品質に問題はあっても品質が低下しているわけではありません。-  結局のところ、移行中にコードは変更されていません。

適切な移行戦略のためには、以下のケースを考慮しなければなりません:

  • ルールセットの新旧バージョン間で同一のルールについては、新旧のメッセージを確実に接続する。

  • 新しいMISRA C++:2023では、一部のルールが厳しくなっています。この場合、古いメッセージは接続され、新しいメッセージは新しいものとして報告されます。

  • 反対に、ルールが緩和される可能性もあります。この場合、特定の古いメッセージは相互接続され、他のメッセージは削除されたものとして報告されます。

しかし、MISRA C++:2023とその前身に関しては、古いルールと新しいルールが必ずしも一対一に対応するとは限りません。その結果、追加または削除されたメッセージを適切に処理するために、開発者は移行戦略とルールセットの変更について認識しておく必要があります。

どのような場合でも、コーディング標準間の移行の影響を分離することは、移行の影響を理解しやすくするために有意義です。これは、中間的なコードの変更やツールのアップグレードを避けて、移行の直前と直後に分析を実行することで達成できます。ツールのアップグレードも関係する場合は、複数の分析を使用して、その影響も分離することができます。

ウェビナーに参加して詳細を知る

MISRA C++:2023 - C++プロジェクトにおける新規格の適用」に関するウェビナーに参加して、AxivionのMISRAチェッカーの詳細をご覧ください。

 

Webinar_Axivion_MISRACpp_2023

 

Axivion静的解析およびアーキテクチャ検証の詳細については、Axivionをご参照ください。

ご説明のお打ち合わせをご希望の場合は、こちらからご連絡ください。


Blog Topics:

Comments