この規則では、ISO/IEC 9899:1990 の付録 G に移動し、実装定義の動作の各ケースを調べて文書化する必要があります。
コードで何を手動でチェックするかを判断するのは難しい作業です。
このルールのために行う手動チェックのリストはありますか?
MISRA-C は主に、C 言語の予測不可能な動作、つまり「トラップと落とし穴」 (未定義および未指定の動作など) を回避することに関心があります。すべての C 開発者は、コンパイラが常に警告を発するわけではないことを認識しておく必要があります。これには、実装定義の動作が含まれます。C 標準では、コンパイル後の特定の構造の動作が異なる場合があります。これらは、安全性の観点からはそれほど重要ではありませんが、コンパイラのドキュメントに、標準で要求されている意図された動作が記述されている場合に限ります。
つまり、特定のコンパイラごとに動作が明確に定義されていますが、懸念事項は、言語拡張機能、コンパイラ (およびビルド チェーン) の既知のバグ、および回避策の文書化を含め、開発者がこれを検証したことを保証することです。
MISRA-C 準拠について C コードを手動で完全にチェックすることは可能ですが、お勧めしません。ガイドラインは、静的分析ツールを念頭に置いて開発されました。ツールですべてのガイドラインを完全にチェックできるわけではありませんが、より優れた MISRA-C ツール (評価には注意してください。「良い」ものは多くありません) は、コードが実装固有に依存している場所を自動的に特定できる場所を少なくとも支援します。行動。これには、ルール 3.1 で必要なすべてのチェックが含まれます。実装定義の動作をツールで完全にチェックできない場合は、手動のレビューが必要になります。
また、新しい MISRA-C プロジェクトを開始する場合は、MISRA-C:2004 に準拠する必要がある場合でも、MISRA-C:2012 を参照することを強くお勧めします。MISRA-C:2012 があると、追加の理論的根拠、説明、例など、多くのガイドラインが明確になるため、役に立ちます。標準 (misra-c.com で入手可能) には、意図しない動作を引き起こす可能性があると考えられる C90 および C99 の実装定義の動作がリストされています。これは、MISRA-C が特に懸念している実装定義の動作に対処するガイドラインと重複する場合と重複しない場合があります。