MISRA Cやその他のコーディングガイドラインの利用が広がるとともに、「準拠」というものをどう定義するかが焦点になってきた。
コーディングガイドラインのルールには、可能な限り守らなければならない必須の要件が幾つかある。
高信頼で正確なルールの適度合判定を行う際に用いる静的解析ツールの機能にはばらつきがある。もし、認証されていないツールを使ってMISRA Cへの準拠を求める場合には、注意深く、詳細な検査が必要になる。
つまり、コーディングルールに準拠するためには静的解析ツールの利用が必須になることもあるので、ツールの選択に際しては慎重な判断が求められる。コーディングルールに対する自動適合度判定の機能は、幾つかの理由から重要性が極めて高い。
MISRA Cでは静的解析の重要性が常に強調されているが、多くのルールについてツールを用いた自動適合度判定処理が可能なことも特徴の1つとなっている。この自動処理についても、MISRA C:2012においてさまざまな手法で強化された。
MISRA C:2012には143のルールと16の指令が含まれる。ルールは厳密に定義されているので、ソースコードの静的解析による適合度判定が可能である。指令は、厳密な定義はされておらず、設計ドキュメント、機能要求、ある範囲での課題の判定や解釈などに対する基準として参照すればよい。指令には次のようなものがある。
これは、準拠を求めるために解析が必要な範囲に対応する。幾つかのルールは、多くの場合にコードの一部分となっている「単一コンパイルユニット(single translation unit)」が適用範囲になっている。一方、コード全体に対する広範囲な解析を必要とするルールもある。
幾つかのルールについては、明瞭な定義や高度なツールの利用によって準拠を示せることが認識されている。このようなコーディングルールは、と“決定可能(decidable)”なルールと呼ばれている。決定可能なルールは、理論的には、ルールからの逸脱を解析ツールによって疑いの余地なく決定できる。一方、決定可能でないルールは、解析ツールの利用とは関係なく、明確に逸脱を判定できない状況が生じる。
MISRA Cは長年にわたり広く利用されてきたが、その過程でアップデートにつながる貴重なフィードバックが行われた。現在、ルールはよりよく定義され、説明され、理論的根拠が与えられたので、ツールごとに解釈が異なるといった余地が極めて少なくなった。各ルールは幾つかのセクションから構成される。
MISRA C:2012は、MISRA C:2004よりもボリュームが大きいが、ルールの数が著しく増加したわけではない。幾つかの新ルール(主としてC99関係)が追加され、少数のルールが削除されあるいは書き直された。しかし、ボリューム増加の要因は、ルールの説明と定義が改善されたことによるものだ。
新しい要求もあるが、それらは比較的少なく、MISRA C:2004に準拠したコードは、ほとんど改変することなくMISRA C:2012に準拠できるとみられる。
Copyright © ITmedia, Inc. All Rights Reserved.