RENESAS TOOL NEWS 2006年04月01日 : RSO-R0C00000SCW01R-060401D
MISRA C ルールチェッカ SQMlint
ご使用上のお願い |
ルネサス製コンパイラ用 MISRA Cルールチェッカの使用上の注意事項を連絡します。
- ルール43違反メッセージについての注意事項
- グローバル変数の初期化時に出力されるルール1違反メッセージについての注意事項
- ルール43違反メッセージについての注意事項
| 1.1 |
|
該当製品
SQMlint V.1.00 Release 0 ~ V.1.02 Release 00
|
| 1.2 |
|
内容
初期化式に対してMISRA Cルール43 (情報の損失が起きる暗黙の型変換) 違反が発生した場合、
違反メッセージ中に表示される「変換後の型」に「変換前の型」が表示されます。
違反メッセージの例:
[MISRA(43) Complaining] information loss conversion (from 'signed
long' to 'signed long')
上記の例ではto 'unsigned long'となるべきところがto 'signed long'となっている。
注: ルール43に対する検査を有効にするオプション名は使用するコンパイラによって異なります
発生例
--------------------------------------------------------------------
void func(void)
{
char* p1;
char* p2;
unsigned long ul = p1 - p2; /* ルール43違反の初期化式 */
}
-------------------------------------------------------------------- |
| 1.3 |
|
対応策
ルール違反メッセージ中の「変換後の型」を正しい変換後の型に読み替えてください。
|
| 1.4 |
|
解決策
次期バージョンで改修する予定です。
|
- グローバル変数の初期化時に出力されるルール1違反メッセージについての注意事項
| 2.1 |
|
該当製品
SQMlint V.1.00 Release 0 ~ V.1.02 Release 00
|
| 2.2 |
|
内容
グローバル変数の初期化時に、出力されるべきではない以下のルール1違反メッセージが出力されることがあります。
non-constant expression of initializer for static object
|
| 2.3 |
|
発生条件
以下の2点の条件をすべて満たす場合に発生します。
| (1) |
|
配列をメンバに持つ構造体、または共用体を定義する。 |
| (2) |
|
(1)の配列のアドレスを初期化子として持つグローバル変数を宣言する。 |
発生例
--------------------------------------------------------------------
struct S {
char ary[5]; /* (1) */
} s;
const char* p = &s.ary[3]; /* (2) */
-------------------------------------------------------------------- |
| 2.4 |
|
対応策
該当するルール1違反メッセージは無視してください
|
| 2.5 |
|
解決策
次期バージョンで改修する予定です。 |