インクルードファイルのMISRA-Cチェックを無効にする

テクニカル・ノート 24725

アーキテクチャ:

All

コンポーネント:

compiler

更新日:

2020/06/25 8:53

はじめに

このテクニカルノートは、ビルドインMISRAチェッカー(Embedded Workbenchツールチェーンの一部)に関するものです。

C-STATに関する注意:C-STAT MISRAチェッカーを使用している場合は、C-STATのドキュメントを参照してください。

解説

ビルトインMiSRAチェッカーの1つを有効にすると多数のメッセージが生成されることがあります。ヘッダファイルのコンテンツに関係するメッセージが多いために、Cソースに関するメッセージが見落とされる可能性があります。

ヘッダファイルの種類によっては、MISRAチェックを無効にすることが役立ちます。 そのようなヘッダファイルは次のとおりです。

  • IAR Systems のヘッダファイル (自動的に除外されます)
  • サードパーティのヘッダファイルのうち、ユーザが内容を変更できないファイル
  • ユーザ独自のヘッダファイルのうち、内容を変更しないファイル

このようなヘッダーファイルについては、「解決方法」または「他の解決方法」を使用してください。

解決方法

#pragma diag_suppress=tag[,tag,...] ディレクティブは、ビルトインMISRA C チェッカのメッセージを抑制するために使用できます。

#includeディレクティブごとにMISRA Cタグの長いリストを作成しないためには、次の2つのマクロを使用できます。

#define MISRAC_DISABLE _Pragma ("diag_suppress= \
Pm001,Pm002,Pm003,Pm004,Pm005,Pm006,Pm007,Pm008,Pm009,Pm010,Pm011,\
Pm012,Pm013,Pm014,Pm015,Pm016,Pm017,Pm018,Pm019,Pm020,Pm021,Pm022,\
Pm023,Pm024,Pm025,Pm026,Pm027,Pm028,Pm029,Pm030,Pm031,Pm032,Pm033,\
Pm034,Pm035,Pm036,Pm037,Pm038,Pm039,Pm040,Pm041,Pm042,Pm043,Pm044,\
Pm045,Pm046,Pm047,Pm048,Pm049,Pm050,Pm051,Pm052,Pm053,Pm054,Pm055,\
Pm056,Pm057,Pm058,Pm059,Pm060,Pm061,Pm062,Pm063,Pm064,Pm065,Pm066,\
Pm067,Pm068,Pm069,Pm070,Pm071,Pm072,Pm073,Pm074,Pm075,Pm076,Pm077,\
Pm078,Pm079,Pm080,Pm081,Pm082,Pm083,Pm084,Pm085,Pm086,Pm087,Pm088,\
Pm089,Pm090,Pm091,Pm092,Pm093,Pm094,Pm095,Pm096,Pm097,Pm098,Pm099,\
Pm100,Pm101,Pm102,Pm103,Pm104,Pm105,Pm106,Pm107,Pm108,Pm109,Pm110,\
Pm111,Pm112,Pm113,Pm114,Pm115,Pm116,Pm117,Pm118,Pm119,Pm120,Pm121,\
Pm122,Pm123,Pm124,Pm125,Pm126,Pm127,Pm128,Pm129,Pm130,Pm131,Pm132,\
Pm133,Pm134,Pm135,Pm136,Pm137,Pm138,Pm139,Pm140,Pm141,Pm142,Pm143,\
Pm144,Pm145,Pm146,Pm147,Pm148,Pm149,Pm150,Pm151,Pm152,Pm153,Pm154,\
Pm155")
#define MISRAC_ENABLE _Pragma ("diag_default= \
Pm001,Pm002,Pm003,Pm004,Pm005,Pm006,Pm007,Pm008,Pm009,Pm010,Pm011,\
Pm012,Pm013,Pm014,Pm015,Pm016,Pm017,Pm018,Pm019,Pm020,Pm021,Pm022,\
Pm023,Pm024,Pm025,Pm026,Pm027,Pm028,Pm029,Pm030,Pm031,Pm032,Pm033,\
Pm034,Pm035,Pm036,Pm037,Pm038,Pm039,Pm040,Pm041,Pm042,Pm043,Pm044,\
Pm045,Pm046,Pm047,Pm048,Pm049,Pm050,Pm051,Pm052,Pm053,Pm054,Pm055,\
Pm056,Pm057,Pm058,Pm059,Pm060,Pm061,Pm062,Pm063,Pm064,Pm065,Pm066,\
Pm067,Pm068,Pm069,Pm070,Pm071,Pm072,Pm073,Pm074,Pm075,Pm076,Pm077,\
Pm078,Pm079,Pm080,Pm081,Pm082,Pm083,Pm084,Pm085,Pm086,Pm087,Pm088,\
Pm089,Pm090,Pm091,Pm092,Pm093,Pm094,Pm095,Pm096,Pm097,Pm098,Pm099,\
Pm100,Pm101,Pm102,Pm103,Pm104,Pm105,Pm106,Pm107,Pm108,Pm109,Pm110,\
Pm111,Pm112,Pm113,Pm114,Pm115,Pm116,Pm117,Pm118,Pm119,Pm120,Pm121,\
Pm122,Pm123,Pm124,Pm125,Pm126,Pm127,Pm128,Pm129,Pm130,Pm131,Pm132,\
Pm133,Pm134,Pm135,Pm136,Pm137,Pm138,Pm139,Pm140,Pm141,Pm142,Pm143,\
Pm144,Pm145,Pm146,Pm147,Pm148,Pm149,Pm150,Pm151,Pm152,Pm153,Pm154,\
Pm155")

ヘッダファイルのMISRA C チェックを無効にするためには、以下のように記述してください。

MISRAC_DISABLE
#include "myincludes.h"
MISRAC_ENABLE

他の解決方法

IARヘッダファイルから提案を得ることができる場合もあります。 一部のヘッダーファイルはMISRA Cに準拠するように作成されていません。効率的に動作するように作成されています。

これらのIARヘッダーファイルでは、文書化されていない#pragmaディレクティブが使用されています。

 

#pragma system_include

MISRA Cエラーが発生するすべてのヘッダーファイルの早い段階に上記記述を追加してください。

まとめ

ビルトインの(MISRAC-1998およびMISRAC-2004)チェッカーを使用するときに出力されるメッセージの対策として、これらの提案を使用してください。

 

全ての製品名は、それぞれの所有者の商標または登録商標です

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。