UNIX用 - 東陽テクニカ

リリースノート
QA C UNIX 版
Version 4.5.
4.5.3J
3J
2003/10
2003/10/
Version1.04
10/10 Version1.04
© 2003 Programming Research Limited / (株)東陽テクニカ
1
目次
1.
はじめに ................................................................................................ 4
2.
QA C4.5.3J CD-ROM の内容 ................................................................. 4
3.
動作環境 ................................................................................................ 5
4.
QA C 4.5.3J のインストール ................................................................. 5
5.
ライセンスの
ライセンスのインストール .................................................................... 6
5.1.
5.2.
5.2.
5.3.
5.4.
6.
FLEXlm のインストール ...........................................................................................6
‘LM-HostID’ の取得 (ライセンス・ファイル取得の手続き)........................................7
ネットワーク・ライセンス・サーバの起動 .....................................................................7
ネットワーク・ライセンス・サーバのクライアントとしての操作.........................................7
‘.flexlmrc’ ファイル.................................................................................................8
解析の
解析の改良点と
改良点と新機能 ........................................................................... 9
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
6.7.
6.8.
6.9.
6.10.
6.11.
6.12.
6.13.
MISRA 対応............................................................................................................9
解釈(パーシング)...................................................................................................9
プリプロセッサ.......................................................................................................10
レイアウト ..............................................................................................................10
宣言/定義 ..........................................................................................................11
リテラル ................................................................................................................12
変換.....................................................................................................................12
文 ........................................................................................................................13
式 ........................................................................................................................14
制御文 .................................................................................................................14
データフロー ........................................................................................................15
メトリックス.............................................................................................................15
設定.....................................................................................................................15
7.
インターフェースの
インターフェースの改良点と
改良点と新機能 .................................................... 16
8.
その他
18
その他の改良点と
改良点と新機能......................................................................
新機能
9.
既知の
既知の問題 ........................................................................................... 20
10. FAQ 集 ................................................................................................. 22
11. 株式会社東陽テクニカ
株式会社東陽テクニカへのお
テクニカへのお問合
へのお問合せ
問合せ .................................................... 24
12. Programming Research Limited へのお問合
へのお問合せ
問合せ ................................. 24
13. 保証の
保証の免責 ........................................................................................... 24
14. 著作権について
25
著作権について....................................................................................
について
15. 商標......................................................................................................
25
商標
© 2003 Programming Research Limited / (株)東陽テクニカ
2
付録 A.
追加された
26
追加されたメッセージ
されたメッセージ..................................................................
メッセージ
付録 B.
変更された
31
変更されたメッセージ
されたメッセージ..................................................................
メッセージ
付録 C.
削除された
47
削除されたメッセージ
されたメッセージ..................................................................
メッセージ
© 2003 Programming Research Limited / (株)東陽テクニカ
3
1. はじめに
本書では、QA C ソースコード・アナライザ UNIX 版の Version 4.5.3J について記述してあります。
本書には、ソフトウェアをシステムにインストールする前にお読みいただきたい重要な情報が含ま
れています。
2. QA C4.5.3J CDCD-ROM の内容
QA C4.5.3J の CD-ROM には以下のファイルが収録されています。
同梱されているファイルまたはフォルダ
説明
1.
/license_ap.doc
QA C ライセンス申請書 (*1)
2.
/FLEXlm /enduser.pdf
FLEXlm の英語版エンドユーザズガイド
3.
/FLEXlm/Readme_sjis.txt
FLEXlm の Readme ファイル(SJIS)
4.
/FLEXlm/Readme_euc.txt
FLEXlm の Readme ファイル(EUC)
5.
/FLEXlm/FLEXlm_for_PC.zip
FLEXlm PC 版の本体
6.
/FLEXlm/FLEXlm_for_Solaris.tar
FLEXlm Solaris 版(7、8 用)の本体
7.
/FLEXlm/FLEXlm_for_Sol26.tar
FLEXlm Solaris 版(2.6 用)の本体
8.
/FLEXlm/FLEXlm_for_HP.tar
FLEXlm HP 版の本体
9.
/QAC-4.5.3J/Docs/
QAC-4.5.3J-PC-ReleaseNotes.pdf
QA C PC 版 4.5.3J のリリースノート(PDF
形式)
10. /QAC-4.5.3J/Docs/
QAC-4.5.3J-PC-UsersGuide.pdf
QA C PC 版 4.5.3J のユーザーズガイド
(PDF 形式)
11. /QAC-4.5.3J/Docs/
QAC-4.5.3J-UNIX-ReleaseNotes.pdf
QA C UNIX 版 4.5.3J のリリースノート
(PDF 形式)
12. /QAC-4.5.3J/Docs/
QAC-4.5.3J-UNIX-UsersGuide.pdf
QA C UNIX 版 4.5.3J のユーザーズガイド
(PDF 形式)
13. /QAC-4.5.3J/UNIX/QAC_4.5.3J_HP.tar.gz
QA C HP 版 4.5.3J インストール用ファイル
14. /QAC-4.5.3J/UNIX/QAC_4.5.3J_Sol.tar.gz
QA C Solaris 版 4.5.3J インストール用ファ
イル
15. /QAC-4.5.3J/PC/setup.exe その他
QA C PC 版 4.5.3J インストール用ファイル
16. /toyo_util/UNIX/toyo_util_for_UNIX.tar
UNIX 版コマンド解析用ツール (*2)
17. /toyo_util/PC/toyo_util_for_PC.zip
PC 用コマンド解析用ツール
*1) license_ap.doc は Word 形式のファイルです。
*2) 15 項の UNIX 版 toyo_util は、HP-UX 版 QA C および Solaris 版 QA C の tar ファイル(12
および 13 項)にも同梱されています。
© 2003 Programming Research Limited / (株)東陽テクニカ
4
3. 動作環境
項目
サポート OS
動作環境
Solaris
備考
2.6、7、8
HP-UX 10.20、11.00
推奨メモリ
256M バイト以上
インストールに 約 40M バイト
必要なディスク
容量
一度に解析する解析対象のファイルサイズの合計が
非常に大きい場合は、さらに多くのメモリを増設するこ
とをお勧めします。
解析時には、解析結果を保存するための領域が必要
になります。十分な空き領域のある環境でご使用下さ
い。
4. QA C 4.5.3J
4.5.3J のインストール
QA C 4.5.3J のインストールは、以下の手順で行って下さい。
1. QA C 4.5.3J をインストールする新しいディレクトリを作成します。
既に前のバージョンの QA C がインストールされている場合は、QA C 4.5.3J を新しいディレク
トリにインストールすることをお勧めします。インストールには、約 40 M バイトのディスク容量が
必要となります。
インストール手順の記述の中で、QA C をインストールするディレクトリを示すために QACDIR
という表記を用います。これ以降、QACDIR と記された部分は、ディレクトリ名に適宜読み替え
て下さい。
Programming Research Ltd.のツールは、/usr/prqa の下に作成したディレクトリ内にインストー
ルすることをお勧めします。QA C 4.5.3J の場合は、QACDIR が指すディレクトリとして
/usr/prqa/QAC4.5.3J をお勧めします。
2. カレント・ディレクトリを QACDIR に移動し、以下のコマンドを使用して QA C のファイルを解
凍します。プラットフォームに適合する tar ファイルは、QA C の CD の QAC-4.5.3J/UNIX
ディレクトリ内にあります。
gunzip -c <tar ファイル名> | tar -xvf 3.
インストール用のスクリプトを、以下のように実行します。
./install.qac
QA C の実行に必要な環境変数の設定とパスの検索をセットアップするための、.cshrc
と.profile の両スクリプトの例が作成されます。
C シェルで動作させる場合には、以下のように入力します。
source .cshrc
Bourne シェルまたは Korn シェルでは、以下のように入力します。
. .profile
ユーザ自身のホーム・ディレクトリから QA C にアクセスしたい場合には、.cshrc または.profile
の内容を、ユーザのホーム・ディレクトリ内にある相当する既存ファイルに併合して下さい。
© 2003 Programming Research Limited / (株)東陽テクニカ
5
5. ライセンスの
ライセンスのインストール
以下に、ネットワーク・ライセンスのインストールに関する手順を記述します。
5.1. FLEXlm のインストール
1)
QA C の CD の/FLEXlm ディレクトリから該当する OS の tar ファイルを任意のディレクトリ
にコピーしてください。本書では/usr/prqa/FLEXlm に FLEXlm をインストールすることを
想定して説明いたします
Solaris7、8 用 :FLEXlm_for_Solaris.tar
Solaris2.6 用 :FLEXlm_for_Sol26.tar
HP 用
2)
:FLEXlm_for_HP.tar
tar 形式ファイルを解凍して下さい。以下の 4 つのファイルが現れます
ライセンス・ユーティリティ・プログラム
lmutil
ライセンス・デーモン・プログラム
lmgrd
インストール・スクリプト
install.sh
Programmin Research Ltd.のライセンス・デーモン prflexd
<tar ファイルの解凍方法>
Solaris の場合:
cd /usr/prqa/FLEXlm
tar xfv FLEXlm_for_Solaris.tar
HP の場合:
cd /usr/prqa/FLEXlm
tar xfv FLEXlm_for_HP.tar
3)
ライセンス・インストール用スクリプト install.sh を実行して、FLEXlm ディレクトリ内の全ての
ユーティリティへのリンクを作成してください。
実行例:
/usr/prqa/FLEXlm/install.sh
© 2003 Programming Research Limited / (株)東陽テクニカ
6
5.2. ‘LMLM-HostID’
HostID’ の取得 (ライセンス・
ライセンス・ファイル取
ファイル取得の手続き
手続き)
QA C の CD にある /usr/prqa/FLEXlm ディレクトリ内にある適合したプラットフォーム用のコマン
ドを使い、“lmutil lmhostid”を実行すると、以下のように LM-HostID が出力されます。
実行例:
/usr/prqa/FLEXlm>lmutil lmhostid
lmutil - Copyright (C) 1989-2002 Globetrotter Software, Inc.
The FLEXlm host ID of this machine is "00c04f07c7d3"
この情報を QA C パッケージに同梱されている「QA C/QA C++ライセンス申請書」にご記入の
上、(株)東陽テクニカ ソフトウェア・ソリューション QA C / QA C++サポート係まで FAX してください。ま
た、「QA C/QA C++ライセンス申請書」と同等の情報を[email protected] に e-mail でお
送りいただいても、ライセンス・ファイルを発行いたします。
5.2. ネットワーク・
ットワーク・ライセンス・
ライセンス・サーバの
サーバの起動
サーバの LM-HostID に合った有効なライセンス・ファイルが必要となります。LM-HostID の取得
については、上述の手順をご参照下さい。
/usr/prqa/FLEXlm ディレクトリで、以下のコマンドを実行して下さい。
lmgrd -c <フルパスのライセンス・ファイル名> -l log_file.log
※ライセンス・ファイルには、LM-HostID に合った有効なライセンスが登録されています。
5.3. ネットワーク・
ネットワーク・ライセンス・
ライセンス・サーバの
サーバのクライアントとしての
クライアントとしての操作
としての操作
各クライアント・マシンでは、C シェルで QA C を動作させる場合には.cshrc を、Bourne シェルまた
は Korn シェルで QA C を動作させる場合には.profile を編集してください。
.cshrc の編集:
setenv PRLDHOST @<サーバ名>
※サーバ名が toyo の場合は、「 setenv PRLDHOST @toyo」と設定します。
.profile の編集:
PRLDHOST=@<サーバ名>;export PRLDHOST
※サーバ名が toyo の場合は、「 PRLDHOST=@toyo ; export PRLDHOST」と設定します。
© 2003 Programming Research Limited / (株)東陽テクニカ
7
5.4. ‘.flexlmrc’
.flexlmrc’ ファイル
QA C の実行時、ライセンス・ファイル名またはサーバ名は、各クライアント・マシンの
$HOME/.flexlmrc に、以下のエントリとして格納されています。
PRFLEXlmXD_LICENSE_FILE=@<servername>
このファイルは、アプリケーションがライセンスを取得する際に、path 変数のようにライセンス・ファイ
ル名やサーバ名を検索するのに使用されます。
© 2003 Programming Research Limited / (株)東陽テクニカ
8
6. 解析の
解析の改良点と
改良点と新機能
CR で始まる番号は、PRL 社の管理番号です。
6.1. MISRA 対応
!
CR506: MISRA ルール 54「空の文はそれ自身を一行だけにおかなければならず、同じ行
にはその他どんなテキストもおいてはならない。」: 新しいメッセージ 3141 が、コメントのみ
を伴った空の文に対して出力されます。
!
CR516: MISRA ルール 93「関数形式マクロよりは、関数を使用すべきである。」: 新しいメッ
セージ 3429 が出力されます。
!
CR621: MISRA ルール 14「char 型は常に unsigned char か signed char で定義されなけれ
ばならない。」: 新しいメッセージ 3625 が、単なる char 型が使用されている全ての箇所で
出力されます。
!
CR628: MISRA ルール 74「引数の一部でも識別子が与えられた場合、宣言や定義で使用
された識別子は等しくなければならない。」: 新しいメッセージ 1330 が出力されます。
!
CR662: MISRA ルール 113「構造体(または共用体)のメンバには全て名前をつけ、その名
前を経由してのみアクセスしなければならない。」: 新しいメッセージ 660 が、名前のない構
造体メンバに対して出力されます。
!
CR762: MISRA ルール 91「マクロはブロック内で、定義される (#define)と同時に定義を解
除(#undef)されてはならない。」: 新しいメッセージ 842 が出力されます。
!
CR763: MISRA ルール 111「ビットフィールドは、unsigned int 型か signed int 型に対しての
み定義しなければならない。」: 新しいメッセージ 634 が、単なる int、short または char が
ビットフィールド宣言に使用された場合に出力されます。
6.2. 解釈(
解釈(パーシング)
パーシング)
!
CR662: 入れ子になった名前のない構造体のメンバを指すことを許す言語拡張をサポート
しました。新しいメッセージ 662 が出力されます。
!
CR785: -d で設定したマクロでセミコロンを定義した際に発生していたパーシング・エラー
を修正しました。
!
CR800: ‘for’ループの条件式に増分/減分演算子がある場合に発生していたパーシン
グ・エラーを修正しました。
!
CR807: キャストを含む式や浮動小数点式で初期化された static オブジェクトに対して、
メッセージ 685 が誤って出力されていたのを修正しました。
!
CR821: 書式指定子 %% に対して、メッセージ 160(%s 番目の変換指定子はサポートされて
いません。)が誤って出力されていたのを修正しました。
!
CR853: セミコロン(‘;’)を含む文字列リテラルが改行文字(‘\’)の後に続く合法的な記述
に対し、メッセージ 259(文字列リテラルに改行文字(new-line character)が含まれていま
す。)が誤って出力されていたのを修正しました。
!
CR863: Microsoft や Hiware コンパイラに含まれるインライン・アセンブラ・コードに対応す
るために、新たに幾つかの形式の構文をサポートできるようになりました。
!
CR884: “munch” の能力を増強し、‘@’ トークンを直接扱うことができる ‘_munch_at’ を備
© 2003 Programming Research Limited / (株)東陽テクニカ
9
えました。
!
CR885: ビットマップ・データ型(言語拡張)の識別子を定義するのに使用される ‘.’ 演算
子が、ファイル有効範囲(スコープ)内で解釈できるようになりました。
!
"Munch"機能の追加により、解析をしない非 C トークンを指定することが可能になりました。
使用方法などの詳細はマニュアル/ヘルプを参照してください。
!
直接の解析を行うために C スタイルの引用符に行番号を埋め込むようにプリプロセスする
ように拡張されました。
!
long long 拡張型(接尾辞 LL、ll)のための字句サポートを拡張しました。
!
ビットフィールドアクセス構文の拡張(Keil コンパイラの要件)をしました。
!
asm と endasm の代わりの ASM と ENDASM を許容するため、拡張の振舞いが改善されま
した。
!
//コメントの扱いの一貫性に関する拡張がされました。C++拡張はメッセージ 1011 の生成
を抑制し、メッセージ 1326 は削除されました。
!
ファイルが正しく解析完了しなかった場合に解析ウィンドウにパーシングエラーが表示され
ます。
!
@ <qualifier> および @ <address> 使用のためのシンタックス拡張を行いました。
!
精度の損失に関するメッセージ(#4120)の表現の不正確さを修正しました。
6.3. プリプロセッサ
!
CR748: #include “filename” 文に対して、ソースファイルが置かれたディレクトリが最初に検
索されなかった点を修正しました。
!
CR796: 波括弧(‘{’)が同じ行にない場合にも、‘_munch_paren’ が正しく動作するように修
正しました。
!
CR816: 複雑なマクロに対してメッセージ 3411(マクロ定義の中に、対になっていない角括
弧または括弧があります。)が出力される問題を修正しました。
!
CR864: “##” 演算子の誤用が検出された後の、復帰能力を向上しました。
!
CR870: マクロ定義内の特定のキーワードや字句の使用に関するメッセージ群を再編成し、
一部は MISRA ルールに対応させました。
3413 このマクロ定義は typedef に置き換えることができるはずです。
3414 マクロ定義に記憶域修飾子 ‘%s’ が含まれています。
3428 マクロ定義に型修飾子 ‘%s’ が含まれています。
3412 マクロ定義に、‘{‘, ‘}’, ‘;’ またはキーワードが含まれています。
3439 マクロはキーワードの再定義に使用してはいけません。
6.4. レイアウト
!
CR886: #define で除去された字句に対する桁位置の補正が正しくないためにメッセージ
2200(この行の段付けは上の行より左に寄っています。)が出力される問題を修正しました。
© 2003 Programming Research Limited / (株)東陽テクニカ
10
6.5. 宣言/
宣言/定義
!
CR758: .met ファイル内の<DEFINE>レコードが、連続する暗黙的な関数宣言に対して正
しく生成されない問題を修正しました。
!
CR760: メッセージ 3203(変数 ‘%s’ を設定しましたが、その後使用していません。)がポイ
ンタに対して正しく出力されない問題を修正しました。
!
CR813: メッセージ 3672(const ではない関数へのポインタを使用しています。)は、typedef
に対しては出力されなくなりました。このメッセージは、宣言/定義のみを対象としています。
!
CR847: メッセージ 3002(関数 ‘%s()’ を定義する際に識別子リストと仮引数宣言を分離し
て記述するのは、旧式の方法です。)は、空の仮引数リストと共に定義された関数に対して
は出力されなくなりました。
!
CR848: メッセージ 422/423(関数呼び出しの実引数の数が、そのプロトタイプで示される
数より少なすぎます。/多すぎます。)は、プロトタイプが明記されている場合以外は出力さ
れなくなりました。プロトタイプが明記されていない場合には、既存のメッセージ 3319(定義
での引数の数と異なる引数の数で関数を呼び出しています。)が出力されます。
!
CR855: メッセージ 1305(広域変数 ‘%s’ は ‘const’ と宣言されていますが、‘static’ とも
‘extern’ とも指定されていません。- C では、これは ‘extern’ を意味します。しかし C++
では ‘static’ を意味します。)が、配列の宣言に対しても出力されるようになりました。
!
CR862: 以下のメッセージについて、ファイルまたは関数の終端から定義された位置へと、
メッセージ出力位置を変更しました。
554 ‘static %s()’ が使われていますが定義が与えられていません。
612 オブジェクト ‘%s’ のサイズが 32767 バイトを超えます。- プログラムは ISO 規格に適
合していません。
620 変数 ‘%s’ は暗黙的に初期化されません。サイズが不明だからです。
1306 ‘%s’ に対する複数の一時的定義があります。- C では動作しますが、C++では動作
しません。
3202 ラベル ‘%s:’ はこの関数では使用していません。削除できます。
3203 変数 ‘%s’ を設定しましたが、その後使用していません。
3218 ファイル有効範囲にある静的変数 ‘%s’ は一つの関数からしかアクセスされていま
せん。
3408 ‘%s’ は外部から見えます。
!
CR865: メッセージ 2547(タグ ‘%s’ を使うことによってよりグローバルな宣言を隠していま
す。)が、union タグや enum タグだけではなく、struct タグに対しても出力されるようになり
ました。
!
CR867: 関数の戻り値の型がないものや、return 文が存在しないか正しくないものに対す
るメッセージが連携して動作するようになり、少ないメッセージ出力で済むようになりました。
!
戻り値を指定せずに関数が定義された(‘int’ と仮定される)場合: ‘return;’ を検出すると
メッセージ 3113 が出力され、return 文が存在しないとメッセージ 3114 が出力されます。
!
関数が ‘void’ 型で定義された場合: ‘return 式;’ を検出するとメッセージ 746 が出力さ
© 2003 Programming Research Limited / (株)東陽テクニカ
11
れます。
!
関数が ‘void’ 型以外の型を返す場合: ‘return;’ を検出するとメッセージ 1325(C++との
互換性に関する警告)とメッセージ 745 が出力され、return 文が存在しないとメッセージ
744 が出力されます。
!
関数内に ‘return;’ と ‘return 式;’ が混在している場合、更にメッセージ 754 が出力され
ます。
!
関数内に複数個の return 文が含まれている場合、メッセージ 2006 が出力されます。
!
CR871: メッセージ 776~779(内部/外部識別子名がユーザ定義/ISO 限界の文字数の
範囲内で一致)は、各識別子が検出された最初の 1 回のみ出力されるようになりました。
!
CR871: メッセージ 776 と 778 は、コンパイラ・パーソナリティに属する -strict オプションを
オフにしても抑止されなくなりました。これらのメッセージを抑止する場合には、メッセージ・
パーソナリティで抑止する通常の方法を用いて下さい。
!
CR880: メッセージ 3308(‘%s()’ は ‘static’ と宣言されました。しかしどこにも定義がありま
せん。この宣言は冗長です。)が、ヘッダ・ファイル内の宣言に対しては抑止されてしまう問
題を修正しました。
!
CR881: 新しいメッセージ 3219(static 関数 ‘%s()’ は、この翻訳単位内で使用されていま
せん。)が追加されました。
!
CR883: メッセージ 3210(グローバルな識別子 ‘%s’ は宣言されましたが使用されていませ
ん。)が、構造体の使用されていないメンバに対して、他のメンバが使用されているにもか
かわらず出力されてしまう問題を修正しました。
6.6. リテラル
!
CR744: 接尾辞の付いたリテラル定数が誤ったデータ型として解釈されてしまう(例:
unsigned int のはずが long )問題を修正しました。
!
CR798: メッセージ 3324(符号無しの値は常にゼロかゼロ以上です。このテストは常に真に
なります。)が、符号無しの値をゼロと比較する際に誤って出力されていた問題を修正しま
した。
!
CR809: (QA C 4.4.2 で解釈をサポートするようになった)2 進数定数に対し、新しいメッ
セージ 246(2 進数定数は一部のコンパイラでのみ使用できます。)が追加されました。.
!
CR818: 新しいメッセージとして、文字列リテラルの直接使用に対するもの(メッセージ
3122)と文字定数の直接使用に対するもの(メッセージ 3123)が追加されました。
!
CR861: ビットフィールドのサイズを定義するのに使用される定数に対してはメッセージ
3120 は出力されなくなり、この状況を検出するために、新しいメッセージ 3131(ビットフィー
ルドの大きさの指定に ‘%s’ が直接使用されています。)が追加されました。
!
CR882: int 型以外の定数に対して、メッセージ 1271(int 型以外の式を使用しても、列挙
定数の型は変更されません。)が出力されない問題を修正しました。
6.7. 変換
!
CR611: 符号無しデータの汎整数拡張に関係する式に対して、メッセージ 4130(符号付き
データに対するビット単位の演算は未定義の結果になります。)の出力を抑止するように改
良しました。
© 2003 Programming Research Limited / (株)東陽テクニカ
12
!
CR725: メッセージ 3892(明示的なキャストは他の型への暗黙的なキャストです。)が、void
* 型にキャストされた式への代入や比較に対しては出力されなくなりました。
!
CR739: 符号無しデータの汎整数拡張に関係する式に対して、メッセージ 502(符号付き
データに対する右シフトは、算術型と論理型の両方の可能性があります。)の出力を抑止
するように改良しました。
!
CR679: 関数呼び出しの実引数が一致しない状況が検出された場合、以下の新しいメッ
セージが出力されます。
1331: 実引数の型か個数が、この関数の前の使用時と異なります。
1332: 実引数の型か個数が、この後で見つかる関数プロトタイプと異なります。
1333: 実引数の型か個数が、この後で見つかる関数定義と異なります。
!
CR829: 整数型と浮動小数点型との間の暗黙の変換に関するいくつかの問題が解消され
ています。(メッセージ 3700~3831、3900~4031)
!
CR843: 符号付きデータと符号無しデータとの間の暗黙の変換に関するいくつかの問題が
解消されています。(メッセージ 3700~3831、3900~4031)
!
CR845: 単なる char データが関係する暗黙の変換に関するいくつかの問題が解消されて
います。(メッセージ 3700~3831、3900~4031)
!
CR851: 汎整数拡張と実引数拡張について完全な範囲で識別するための新しいメッセー
ジが導入されました。既存のメッセージ 2100, 2101 と新しいメッセージ 2102~2107 が汎
整数拡張を扱い、メッセージ 2110~2118 がデフォルトの実引数拡張に対して出力されま
す。
!
CR856: 浮動小数点定数のバランシングに関係する式において、メッセージ 1262 が正しく
出力されない問題を修正しました。
!
CR858: 新しいメッセージ 1274/1275(接尾辞が付いていない/付いた浮動小数点型リテ
ラルが、他のオペランドの暗黙的なキャストを引き起こします。)が追加されました。
!
CR858: 新しいメッセージ 1276(整数型リテラルが、代入の前に暗黙的に浮動小数点型へ
キャストされます。)が追加されました。
!
CR859: メッセージ 1260(整数型リテラルが、暗黙的に浮動小数点型へキャストされます。)
は、明示的なキャストに対しては出力されなくなりました。
!
CR874: 暗黙的キャストに関するメッセージ(3700 番台)が、リテラル定数の変換に関する
メッセージ(1250~1276)と重複する場合には出力されなくなりました。
6.8. 文
!
CR695: メッセージ 402(副作用完了点の間で、‘%s’ が変更され、アクセスされています。評価の順番は未定義です。)が、括弧付きの代入(‘(a) = a;’)に対して正しく出力されない
問題を修正しました。
!
CR695: メッセージ 402(副作用完了点の間で、‘%s’ が変更され、アクセスされています。評価の順番は未定義です。)が、配列型の実引数が関係する式の一部で正しく出力され
ない問題を修正しました。
!
CR747: メッセージ 3217(ローカル変数のアドレスがそのメモリが開放された後も維持され
る静的変数に代入されています。)は、広域変数から関数の static 変数への代入時には
© 2003 Programming Research Limited / (株)東陽テクニカ
13
出力されなくなりました。
!
CR788: メッセージ 3112(この文は何の副作用もありません。- 削除できます。)は、volatile
オブジェクトに対しては出力されなくなりました。
!
CR839: メッセージ 404(副作用完了点の間で2つ以上のデータ・アイテムが変更されるか
もしれません。- データがオーバーラップすると危険です。)が、メッセージ 402(副作用完
了点の間で、‘%s’ が変更され、アクセスされています。- 評価の順番は未定義です。)の
かわりに誤って出力される問題を修正し、メッセージ 404~406 は廃止されました。
6.9. 式
!
CR722: 配列終端の 1 つ先の要素アドレスを取得した場合には、メッセージ 3680(配列の
領域外を指しています。)は出力されなくなりました。このアドレスの内容を参照した場合に
は、新しいメッセージ 3683(配列の終端の 1 つ先の要素の位置を指しています。)がその
危険性を指摘します。
!
CR761: メッセージ 3344(値のテストは明示的に行うべきです。)が、条件演算子(‘? :’)の
最初のオペランドに対しても出力されるようになりました。
!
CR789: 新しいメッセージ 4131(符号付きのオペランドを左シフトしています。)が追加され
ました。
!
CR790: メッセージ 500(シフト演算子の右オペランドが負の値です。- これは定義されてい
ません。)とメッセージ 501(シフト演算子の右オペランドが大きすぎます。- これは定義され
ていません。)が正しく出力されない問題を修正しました。
!
CR797: メッセージ 4130(符号付きデータに対するビット単位の演算は未定義の結果にな
ります。)が、‘signed short’ 型に対しても出力されるようになりました。
!
CR838: メッセージ 556(代入の左オペランドは変更可能なオブジェクトでなければなりませ
ん。)が、ポインタを介して定数を変更しようとした場合にも出力されるようになりました。
!
CR873: メッセージ 3322(否定 ‘!’ のオペランドが定数です。)が、 ‘#define TRUE
(!FALSE)’ のような定数 0 または 1 に対しては出力されなくなりました。
!
CR875: メッセージ 4108/4109(論理演算子の左側/右側のオペランドが算術式です。)と
4111/4112(関係演算子の右側/左側のオペランドが論理式です。)が、オペランドとして
式だけでなく単純な変数に対しても出力されるようになりました。
!
CR875: 新しいメッセージ 4113(関係演算子の両側のオペランドが論理式です。)が追加さ
れました。
6.10. 制御文
!
CR650: ‘for’ ループの増分式で使用されている変数がループ本体の中で初期化されて
いる場合に、メッセージ 3321(変数 ‘%s’ は、この時点では設定されていないかもしれませ
ん。)が誤って出力されてしまう問題を修正しました。
!
CR724: ループ制御変数に対するチェック(2460 番台のメッセージ)が、構造体の要素に
対しては出力されなくなりました。
!
CR815: switch 文の case ラベルの後に空のブロックがある場合、そのブロックの後の、次
の case の前にある行で、メッセージ 3201(この文には到達できません。)が誤って出力され
てしまう問題を修正しました。
© 2003 Programming Research Limited / (株)東陽テクニカ
14
!
CR819: メッセージ 2003(空でない case は明示的な break で終わるべきです。)が、switch
文の default ラベルに対しては出力されない問題を修正しました。
6.11. データフロー
!
CR787: メッセージ 3321(変数 ‘%s’ は、この時点では設定されていないかもしれません。)
が、共用体のメンバに対して誤って出力されてしまう問題を修正しました。
!
CR850: メッセージ 3204(変数 ‘%s’ を1度しか設定していません。- それが決して変わらな
いことを示すために ‘const’ を使用することを考慮するべきです。)が、 定数値による代入
の場合にのみ出力されるようになりました。
6.12. メトリックス
!
CR836: STCDN(コメント密度)メトリックスが、 ファイル内のどの位置にあるコメントをカウン
トするかの設定に応じて正しく算出されるようになり、コメントのカウント対象を設定するオプ
ション -comment が、アナライザ・パーソナリティに加わりました。
6.13. 設定
!
CR699: 新しい設定オプション(-intrinsictype)で、size_t, ptrdiff_t, wchar_t の各々の実装
定義型のサイズを指定できるようになりました。これらの実装定義型の設定がソースコード
内の typedef と矛盾する場合には、新しいメッセージ 40~42 が出力されます。
!
CR824: ユーザが設定したメトリックス境界値を、-threshold オプションで設定できるように
なりました。境界値を超えた場合には、予め指定したユーザ・メッセージまたは新しいメッ
セージ 4700(メトリックス %s の値が境界値を超えています。)が出力されます。
!
現在の qac のパラメータを明らかにするための新規オプション (-set+) が追加されました。
!
UNIX と PC の qacmet.txt ファイルをマージしました。
!
解析後の処理の構成へ、パーソナリティ設定を示す%P を追加しました。
© 2003 Programming Research Limited / (株)東陽テクニカ
15
7. インターフェースの
インターフェースの改良点と
改良点と新機能
CR で始まる番号は、PRL 社の管理番号です。
!
QA C の PC 版との機能と用語の統一性を向上するため、メニューの配置を変更しました。
以下に、一部の例を示します。
o 「オプション」メニュー項目を「構成」に変更しました。
o 「サブ・プロジェクト」は「フォルダ」として参照されるようになりました。
o 「プロジェクトの編集」を「フォルダ・パラメータ」に変更しました。
o 「フォルダ・パラメータ」ダイアログからパーソナリティ・ファイルを編集するためのショート
カット・ボタンを新設しました。
o 新しいオプションとして「プリプロセス済みソースの表示」を追加しました。
o 新しいオプションとして「.met ファイルの表示」を追加しました。
o ポップアップメニュー[変更をサブフォルダへ反映]によって、フォルダ設定の変更を全
サブフォルダへ反映させることが可能になりました。
o メインメニュー項目の配置と構成を改善しました。
o errdsp と prjdsp で出力ファイルの名前指定をするための新しいオプション -file が追加
されました。
!
パーソナリティ・ファイルの位置を、フォルダ・パラメータを指定することで宣言することがで
きるようになりました。
!
出力ファイルのディレクトリ位置が、アナライザ・パーソナリティでなく、フォルダ・パラメータ
として指定できるようになりました。QA C の以前のバージョンで生成されたプロジェクトを読
み込んだ場合は、出力ファイル・パスが ‘.’ に設定されます。
!
プロジェクトレベルの構成と一般の構成を変更しました。
!
メッセージ・パーソナリティ:
o メッセージ・パーソナリティにおける抑止するメッセージの表示方法を改善し、リスト・
ボックスではなくツリー構造にしました。
o ヘルプ・ファイルの位置の指定が、-usrpath で設定できるようになりました。
o MISRA Compliance Module が、メッセージ・パーソナリティ・ファイルから直接設定でき
るようになりました。
o 解析後の処理が、GUI から設定できるようになりました。
o 抑止されたメッセージ・オプション、または選択されたメッセージ・オプションとしての保
存を受け付けることができるようになりました。
o パーソナリティ編集ダイアログの[別名保存…]ボタンにより、編集中のパーソナリティを
別の名前で保存できるようになりました。
!
アナライザパーソナリティ:
© 2003 Programming Research Limited / (株)東陽テクニカ
16
o ユーザ定義のメトリック境界値を指定できるようになりました。
o #pragma ブロックの設定が、コンパイラ・パーソナリティからアナライザ・パーソナリティに
移されました。
o 出力パスの設定が、アナライザ・パーソナリティからフォルダ・パラメータに移されました。
o アナライザパーソナリティ項目のレイアウトを変更しました。(C456)
o マクロ定義オプション(アナライザ/コンパイラパーソナリティ)はクォーテーションで囲ま
れます。 (例 -D”sfr=unsigned int”) (C696)
!
コンパイラ・パーソナリティ:
o システム・ヘッダの設定が、アナライザ・パーソナリティだけでなくコンパイラ・パーソナリ
ティでもできるようになりました。
o #pragma ブロックの設定が、コンパイラ・パーソナリティからアナライザ・パーソナリティに
移されました。
o 型のサイズとアライメントを設定する機能が向上しました。
o マクロ定義オプション(アナライザ/コンパイラパーソナリティ)はクォーテーションで囲ま
れます。 (例 -D”sfr=unsigned int”) (C696)
!
カスタム・レポート:
o 新しい機能で、「構成」-「オプション」メニューで指定します。
o 「レポート」メニューから起動します。
o 構成のオプションにカスタムレポートセクションを追加し、レポートメニューに追加しまし
た。
!
新しいヘルプ・オプション:
o メッセージ・ヘルプと C 言語ヘルプが加わりました。
!
関係図は全てのインクルードされたファイルと連結、マージされるようになりました。
!
関係図でファンイン/ファンアウト機能が拡張されました。
!
外部の HTML ブラウザが以下の表示用に設定できるようになりました。
o ヘルプ・ページ
o メッセージの説明
o 宣言のクロス・チェック
o 警告リスト・レポート
o カスタム・レポート
© 2003 Programming Research Limited / (株)東陽テクニカ
17
8. その他
その他の改良点と
改良点と新機能
CR で始まる番号は、PRL 社の管理番号です。
!
CR1023 絶対パスで指定されたインクルード・ファイルの検索に失敗する問題を修正しまし
た。
!
CR1033 パーソナリティの定義を編集すると、-D オプションのダブル・クォーテーションが
外れてしまう問題を修正しました。
!
CR1071: enum への int でキャストした代入がある場合に、解釈に失敗していた問題を修正
しました。
!
CR1092: 環境変数 $VALUE が、プロジェクト・ファイルで使用できるようになりました。
!
CR1093: .qacrc ファイルを扱う能力が向上しました。
!
CR1094: デモグラフィック・ブラウザに以下の変更を加えました。
o グリッド線が追加されました。
o バーが存在しなくても、範囲が表示されるようになりました。
o 範囲を示す % の値が、空のバーを表示するように更新されました。
o タイトルが、.prm ファイルから読み込まれるようになりました。
o qac.met が .kiv ファイルの代わりに使用されるようになりました。
!
CR1094: メトリックス・ブラウザに以下の変更を加えました。
o デモグラフィック・ファイルが、メトリックスから生成されるようになりました。
o 関数構造図にジャンプできるようになりました。
o 指定したメトリックに対して、タイトル・バーが追加されました。
o メニューが、PC 版のメニューに合わせて変更されました。
!
CR1095: パーソナリティ・ダイアログ・ボックスの構成を改善するために、タブが追加されま
した。
!
CR1095: パーソナリティ・ダイアログ・ボックスのサイズが変更可能になりました。
!
CR1152: ステータス・ウィンドウの機能向上で、解析時間が短縮されました。GUI から各
ファイルの解析時にプロジェクト内の全ソースファイル、.met/.err ファイルを誤ってオープ
ンしていたのを修正しました。
!
CR1170: -forceinclude オプションで指定された追加インクルード・ファイルに対して、
#include パス指定に関するメッセージが出力されてしまう問題を修正しました。
!
CR1172: 前処理指令の式の評価が誤っていた問題を修正しました。
!
CR1174: インライン・アセンブラ文 “asm()” が或る状況下で解釈の誤りを引き起こす問題
を修正しました。
!
CR1177: enum を返す関数へのポインタを指す場合に解釈が異常終了してしまう問題を修
正しました。
© 2003 Programming Research Limited / (株)東陽テクニカ
18
!
以前のバージョンで使用されていたライセンス機構が、新しく FLEXlm ライセンス・ソフト
ウェアに置き換えられました。
© 2003 Programming Research Limited / (株)東陽テクニカ
19
9. 既知
既知の
の問題
NO
1
OS
LANG
問題内容
対策
プロトタイプ宣言されている行より前に定義さ
れている関数で、プロトタイプ宣言の関数が使
用されている場合に、失敗:未定義の反応(プ
リプロセス中断)となります。
不具合として PRL に報告いたし
ましたが、残念ながら現時点で
は回避することができません。
例:
関数 boo は、5 行目で宣言されていますが、3
全プラット SJIS/
行目で関数 foo が関数 boo を呼び出していま
フォーム EUC
す。
1:void foo(void)
2:{
3: boo();
4:}
5:int boo(void);
フォルダ名やパス名に、0x8ea1 ~ 0x8edf ま
での 63 種類の文字を使用すると QAC は解
析を失敗します。
2
全プラット
SJIS
フォーム
具体例:
治爾璽痔磁示而耳自蒔辞汐鹿式識
鴫竺軸宍雫七叱執失嫉室悉湿漆疾質
実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮
社紗者謝車遮蛇邪借勺尺杓灼爵酌釈
オンラインヘルプで日本語のヘルプを表示す
ると文字化けをおこす場合があります。
3
GUI のヘルプブラウザで文字化けが報告され
UNIX 全 SJIS/ ています。
般
EUC EUC の場合、「ォ」や「制」が文字化けします。
例:「デフォルト」→「デフェ c)ルト」、「制御」
→「凄 c)」など
SJIS の場合、「か」や「見」が文字化けします。
© 2003 Programming Research Limited / (株)東陽テクニカ
不具合として PRL に報告いたし
ましたが、残念ながら現時点で
は回避することができません。
恐れ入りますが、0x8ea1 ~
0x8edf までの 63 種類の文字を
フォルダ名やファイル名に使用
しないで下さい。
恐れ入りますが、外部の HTML
ブラウザをご使用ください。
設定は以下の通りです。
1.xqac コマンドで QAC の GUI
を起動する。
2.プルダウンメニュー「構成」->
「オプション」->「HTML ブラウザ
の指定」を選択して、ご使用の
HTML ブラウザの起動コマンド
を入力してください。
20
NO
OS
LANG
問題内容
対策
「表示」->「関数メトリックス」、「表示」->「ファイ
ルメトリックス」の操作で表示されるメトリックブ
ラウザのプルダウンメニューと画面右上に表示
されるメトリックス名が英語で表示されます。
4
UNIX 全 SJIS/
般
EUC
EUC 用と SJIS 用の qacmet.txt
を、ロケールに合わせて英語版
の qacmet.txt と入れ替えると日
本語表示できます。
メトリックス表示はデフォルトで英
語です。メトリックス名等を日本
語表示したい方はお手数です
が、以下の手続きを実施してくだ
さい。
1.ご使用になるロケールを決定
してください。QA C では、ロ
ケール毎の qacmet.txt を用意し
ています。
EUC 用の qacmet.txt は、
qacmet.jp.euc.txt です。
SJIS 用の qacmet.txt は、
qacmet.jp.sj.txt です。
2.$QACBIN へチェンジディレ
クトリしてください。
3.qacmet.txt を qacmet.txt.org
にリネームしてください。
4.qacmet.jp.euc.txt または
qacmet.jp.sj.txt を qacmet.txt に
リネームしてください。
5.ファイル名の変更が終了した
ら、QA C を起動してください。
6
デモグラフィック画面で、タイトルとメニュー内
UNIX 全 SJIS/
のメトリックス名は英語で表示されます。
般
EUC
QA C4.5.3J のデモグラフィック
画面のタイトルは英語で表示さ
れます。
GUI のプルダウンメニュー「レポート」から選択
で作成されるレポートは英語で表示されま
す。・警告リスト・未使用外部変数・識別子宣
UNIX 全 SJIS/ 言・近似名の解析・外部クロスリファレンス・
般
EUC COCOMO コストモデル・カスタム・レポートな
ど。
QA C4.5.3J のレポート機能はす
べて英語での提供となります。
SJIS ロケールで UNIX 版 QA C の
v_callcheck を実行した出力のエラーメッセー
ジが文字化けします。
ただし、警告メッセ-ジは文字化けしません。
この問題は GUI でもコマンドラインでも発生し
ます。
不具合として PRL に報告いたし
ましたが、残念ながら現時点で
は回避することができません。
7
8
UNIX 全
般
SJIS
© 2003 Programming Research Limited / (株)東陽テクニカ
21
10. FAQ 集
NO
1
OS
UNIX
全般
LANG
質問
対策
外部エディタを設定しました
QA C は外部エディタ起動時 xterm を使用して
が、日本語を表示できません。 います。そのため、起動された外部エディタは
日本語を扱えません。
日本語を正しく表示させるためには、
$QACBIN/Xqac を編集して日本語を扱える
ターミナルを起動するように変更してください。
SJIS/
編集個所は、Xqac の1行目です。
EUC
Xqac*app_xterm: xterm<-修正
OS により使用している日本語ターミナルがこと
なるため、ご使用の環境にあったターミナル起
動コマンドを入力してください。
正常に印刷できません。
2
3
4
HP-UX
SJIS/
EUC
旧バージョンの解析オプション
ファイルを使用して解析を実施
しましたが、エラーになりまし
全プラット SJIS/ た。
フォーム EUC
全プラット SJIS/
フォーム EUC
ライセンスが取得できないた
め、QA C が使用できません。
プリンタの機種によっては特殊なオプションを
追加しなければならない場合があります。
プリンタの機種にあわせた特殊なオプションを
x_print.sh スクリプトのlpコマンドのオプションに
追加してください。
詳細は、[email protected] にお問い合わ
せください。
解析オプションの指定で、値の設定を必要とするオ
プション(+,-以外の設定が必要なオプション)で
は、オプションと設定値の間にスペースを入れること
が必須になりました。
QA C4.5.x より以前のバージョンで使用していた
QA C 解析用オプション設定ファイルをご使用の
ユーザは、オプションと設定値の間に空白を挿入し
てください。
ライセンスサーバとクライアントのマシンタイムが
極端に異なる(約一日以上)場合、ライセンスを
取得できなくなります。
ライセンスサーバとクライアントマシンのマシン
タイムを合わせてください。
© 2003 Programming Research Limited / (株)東陽テクニカ
22
NO
5
OS
LANG
質問
対策
QA C の旧バージョンと同じ
QA C4.5.3J から、メッセージのグループが変
メッセージグループを使用して わりました。
解析したい。
QA C4.x のバージョンと同じメッセージグルー
プを使用したい場合は、qac.usr.jp.sj.mcm また
は qac.usr.jp.euc.mcm を、ユーザメッセージ
ファイルとして設定してください。
全プラット SJIS/
このファイルは、QA C4.5.3J をインストールした
フォーム EUC
ディレクトリの下のbinにあります。
ユーザメッセージファイルの設定方法は、QA
C ユーザーズガイド(QAC4.5.3J/Docs/QAC4.5.3J-UNIX-UsersGuide.pdf)の付録 B 構成
オプションの-usrpath 及び-usrfile をご参照く
ださい。
© 2003 Programming Research Limited / (株)東陽テクニカ
23
テクニカへのお
へのお問合
問合せ
せ
11. 株式会社東陽テクニカ
株式会社東陽テクニカ
へのお
問合
株式会社東陽テクニカは、Programming Research 社の日本国内における総代理店です。
日本国内でのお問合せについては、株式会社東陽テクニカへお願いします。
株式会社 東陽テクニカ
ソフトウェア・ソリューション
郵便番号
住所
電話
FAX
E-Mail(営業窓口)
〒103-8284
東京都中央区八重洲 1-1-6
03-3245-1248
03-3246-0645
[email protected]
E-Mail(サポート窓口)
[email protected]
問合せ
せ
12. Programming Research Limited へのお問合
へのお問合
以下に示す Programming Research Ltd.の本社に直接お問合せいただくこともできます。
電話
+44 (0) 1 932 888 080
FAX
+44 (0) 1 932 888 081
e-mail
[email protected]
保証の
の免責
13. 保証
和文:
Programming Research Ltd.では、作成時に細心の注意を払って本書を正確に記述することに努
めておりますが、本書内の誤りや欠落に関する責任は負いかねます。また、本書内の記述通りに
製品が動作することを表現かつ意味する保証書として作成された文書ではないことをお断りして
おきます。
英文:
The staff of Programming Research Ltd. have taken due care in preparing this document which is
believed to be accurate at the time of printing. However, no liability can be accepted for errors
or omissions nor should this document be considered as an expressed or implied warranty that
the products described perform as specified within.
© 2003 Programming Research Limited / (株)東陽テクニカ
24
著作権について
について
14. 著作権
和文:
本書には著作権があり、全体または一部を問わず、どのような方法(電子的またはその他)によっ
ても、Programming Research Ltd.の文書による事前の承諾なしには、複製、再生、公開、転記、翻
訳、縮小を行うことはできません。
英文:
This document is copyright and may not, in whole or in part be copied, reproduced, disclosed,
transferred, translated, or reduced to any form, including electronic medium or machinereadable form, or transmitted by any means, electronic or otherwise, unless Programming
Research Ltd. consents in writing in advance.
15. 商標
QA C++, QA Fortran, QA Manager は、Programming Research Ltd.の商標です。 MISRA は、
MISRA Consortium を代表して運営する The Motor Industry Research Association の登録商標で
す。PR:QA と PR:QA ロゴは、Programming Research Ltd.の登録商標です。QA C, Microsoft と
Windows は、Microsoft Corporation の登録商標です。UNIX は、UNIX System Laboratories, Inc.
の登録商標です。
本書内に示した他の全ての製品やサービスには、それらを販売する企業で選定された商標、サー
ビスマーク、製品名が含まれます。
© 2003 Programming Research Limited / (株)東陽テクニカ
25
付録A.
付録
A.
警告
番号
40
41
42
180
246
277
310
339
428
488
551
634
660
662
689
693
694
695
696
697
722
723
769
770
780
832
838
839
841
842
861
862
878
880
881
889
890
891
906
1018
追加された
追加されたメッセージ
されたメッセージ
メッセージ
size_t の定義が設定された型と異なります。
ptrdiff_t の定義が設定された型と異なります。
wchar_t の定義が設定された型と異なります。
[S] 変換指定子 %s に ll を使用することは ISO C では正当ではありません。
2 進数定数は一部のコンパイラでのみ使用できます。
符号無しのキャストを負の値に対して行っています。
異なるポインタ型へのキャストです。
8 進定数の使用は 推奨されていません。
おそらく関数に () を付け忘れています。
ポインタ算術を行っています。
代入演算子の左オペランドに キャストをしてはなりません。
ビットフィールドは、unsigned または signed として明示的に宣言するべきです。
構造体/共有体のメンバーに名前がありません。
名前無しの構造体の要素にアクセスするために、拡張された構文を使用しています。
初期化子が飛び越されるか、全く使用されていない可能性があります。
構造体初期化子に、 オプションの { がありません。
配列初期化子に、 オプションの { がありません。
sizeof に与えた型が malloc のキャストに使われている型と適合しません。
malloc された大きさが、ポインタの指す型の大きさより小さいです。
malloc されたデータの大きさは示された型の大きさの積として正しい値になっていません。
前の列挙定数は、 明示的に値が代入されました。
この列挙子並びでは、 なにも初期化しないか、最初だけ初期化するか、 全てを初期化してくださ
い。
break 文は switch 文の中でのみ使用されるべきです。
continue 文は使用するべきではありません。
%s と名づけられた識別子は 他の名前空間でも宣言されています。
#include 前処理指令の中の マクロ代替です。
ファイルは既にトップレベルで インクルードされています。
ファイルは前の include の中で インクルードされました。
プログラミング標準の中には #undef の使用を推奨していないものがあります。
マクロは、ブロック内で#define したり#undef したりしないで下さい。
<%s> の内容はソースの中で 参照されません。
"%s" の内容はソースの中で 参照されません。
ワイド文字または 文字列リテラルを使用しています。
[U] # と ## 演算子の評価の 順序は未定義です。
[U] 複数の ## 演算子の 評価順序は未定義です。
既に#undef されている識別子を #undef しています。
既に(ネストされた #if で)#undef されている識別子を#ifdef しています。
既に#undef されている識別子を #ifdef しています。
[U] 基本ソース文字集合内に無い文字が使われています。
[S] 接尾語'LL'は、ISO C に対する拡張仕様です。
© 2003 Programming Research Limited / (株)東陽テクニカ
26
警告
番号
1019
1020
1021
1022
1023
1024
1025
1026
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1271
1272
1273
1274
1275
1276
1330
1331
1332
1333
1400
1401
1402
1403
メッセージ
[S] '@ address'は、ISO C ではサポートされていません。
'__typeof__' は正当な ISO C の 字句(トークン)ではありません。拡張として扱われます。
式の中の文は ISO では有効ではありません。 拡張とみなされます。
'__alignof__' は ISO C 字句として 有効ではありません。拡張とみなされます。
[C] 関数型に対する '__alignof__'は違法です。
[C] 不完全型に対する '__alignof__'は違法です。
[C] ビットフィールドに対する '__alignof__'は違法です。
[S] この '@ word'は無視されました。
接尾辞が付いていない整数型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。
接尾辞が付いた整数型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。
接尾辞が付いた整数型リテラルが、暗黙的に他の型へキャストされます。
接尾辞が付いていない整数型リテラルが、暗黙的に他の型へキャストされます。
リテラルの接尾辞が、整数定数の結果の型と一致しません。
接尾辞が付いていない整数型リテラルが、int 型ではありません。
接尾辞が付いた整数型リテラルが、代入の前に暗黙的にキャストされます。
接尾辞が付いた整数型リテラルが、代入の前に暗黙的により小さな型へキャストされます。
接尾辞が付いた整数型リテラルが、明示的に他の型へキャストされます。
接尾辞が付いていない整数型リテラルが、明示的に他の型へキャストされます。
整数型リテラルが、暗黙的に浮動小数点型へキャストされます。
接尾辞が付いた浮動小数点型リテラルが、暗黙的に他の型へキャストされます。
接尾辞が付いていない浮動小数点型リテラルが、暗黙的に他の型へキャストされます。
浮動小数点型リテラルは 他の整数型オペランドの暗黙的なキャストを引き起こします。
接尾辞が付いた浮動小数点型リテラルが、代入の前に暗黙的にキャストされます。
接尾辞が付いていない浮動小数点型リテラルが、代入の前に暗黙的にキャストされます。
浮動小数点型リテラルは 代入の前に整数型へキャストされます。
接尾辞が付いた浮動小数点型リテラルが、明示的に他の型へキャストされます。
接尾辞が付いていない浮動小数点型リテラルが、明示的に他の型へキャストされます。
浮動小数点型リテラルが、明示的に整数型へキャストされます。
非 int 型の式を使用しても、列挙定数の型は変更されません。
数字のリテラルの先頭にゼロを付けても それ自身の型に影響を与えません。
リテラル定数が、意図した型よりも大きすぎます。
接尾辞が付いていない浮動小数点型リテラルが、他のオペランドの暗黙的なキャストを引き起こし
ます。
接尾辞が付いた浮動小数点型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。
整数型リテラルが、代入の前に暗黙的に浮動小数点型へキャストされます。
関数定義で使用されている仮引数識別子が、関数プロトタイプのものと異なります。
実引数の型か個数が、この関数の前の使用時と異なります。
実引数の型か個数が、この後で見つかる関数プロトタイプと異なります。
実引数の型か個数が、この後で見つかる関数定義と異なります。
列挙型に無い列挙定数と等価比較を しています。
渡された実引数は 列挙型に無い列挙定数です。
列挙型に無い列挙定数の 代入です。
列挙型に無い列挙定数が 返されています。
© 2003 Programming Research Limited / (株)東陽テクニカ
27
警告
番号
1404
1410
1411
1412
1413
1414
1420
1421
1422
1423
1424
1431
1432
1433
1440
1441
1442
1443
1444
1460
1461
1470
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
2102
2103
2104
2105
2106
2107
2110
2111
メッセージ
列挙型に無い列挙定数を 比較しています。
列挙型が期待されている所で リテラルと等価比較をしています。
列挙型が期待されている所で リテラルが実引数として渡されています。
列挙型が期待されている所で リテラルが代入されています。
列挙型が期待されている所で リテラルが返されています。
列挙型が期待されている所で リテラルが比較されています。
異なる型の列挙オブジェクトとの 等価比較をしています。
異なる型の列挙オブジェクトが 実引数として渡されています。
異なる型の列挙オブジェクトの 代入です。
異なる型の列挙オブジェクトが 返されています。
異なる型の列挙オブジェクトの 比較をしています。
列挙型が期待されていない所で 列挙型が実引数として渡されています。
列挙型を非列挙型へ 代入しています。
列挙型を非列挙型へ 返しています。
列挙型と非列挙型を 等価比較しています。
列挙型が期待されている所で 非列挙型を実引数として渡しています。これは 値域を超える可能
性があります。
非列挙型を列挙型へ代入しています。 これは値域を超える可能性があります。
非列挙型を列挙型へ返しています。 これは値域を超える可能性があります。
非列挙型と列挙型の比較です。
switch 文の名札の値である %s は 列挙型に含まれていません。
値は列挙型にありませんが、 型の列挙定数をビット単位の OR 演算しています。
列挙定数ではなくリテラルが 列挙型の switch 式で使用されています。
case 名札が異なる 列挙型に属しています。
:演算子のオペランドは異なる 列挙型です。
列挙体の値に対してビット単位の 演算を行っています。
列挙型の値の取り得る範囲を考えると、このテストは常に真になります。
列挙型の値の取り得る範囲を考えると、このテストは常に偽になります。
列挙型のオブジェクトは 非シンボリック名のゼロと暗黙的に比較されています。
ゼロ値を持たない列挙型のオブジェクトが 暗黙的にゼロと比較されようとしています。
列挙されたオブジェクトに 算術が行われています。
ビット単位の演算子の オペランドは異なる列挙型です。
単項演算子が列挙型へ 適用されています。
列挙型へのキャスト式は この型で表示される表現できる範囲の値を持たない可能性があります。
列挙オブジェクトまたは 列挙定数が旧式のスタイルの関数宣言の 実引数として渡されています。
汎整数拡張 : unsigned char は unsigned int に拡張されます。
汎整数拡張 : unsigned short は unsigned int に拡張されます。
汎整数拡張 : signed char は signed int に拡張されます。
汎整数拡張 : signed short は signed int に拡張されます。
汎整数拡張 : 単なる char は signed int に拡張されます。
汎整数拡張 : 単なる char は unsigned int に拡張されます。
デフォルトの引数拡張 : unsigned char は signed int に拡張されます。
デフォルトの引数拡張 : unsigned short は signed int に拡張されます。
© 2003 Programming Research Limited / (株)東陽テクニカ
28
警告
番号
2112
2113
2114
2115
2116
2117
2118
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
3003
3131
3140
3141
3216
3217
3218
3219
3344
3404
3405
3422
3423
3424
3425
3426
3427
3428
3429
3430
3432
3433
3434
メッセージ
デフォルトの引数拡張 : unsigned char は unsigned int に拡張されます。
デフォルトの引数拡張 : unsigned short は unsigned int に拡張されます。
デフォルトの引数拡張 : signed char は signed int に拡張されます。
デフォルトの引数拡張 : signed short は signed int に拡張されます。
デフォルトの引数拡張 : 単なる char は signed int に拡張されます。
デフォルトの引数拡張 : 単なる char は unsigned int に拡張されます。
デフォルトの引数拡張 : float は double に拡張されます。
制御変数 %s はブロック有効範囲を 持ちません。
制御変数 %s はこの for ループ式で 初期化されていません。
制御変数 %s は増分式に 現れません。
制御変数 %s はループヘッダで 2 度変更されています。
ループが 1 回しか実行されません。
制御変数は繰返しが行われない ことを示唆しています。
制御変数 %s は、 ループの内側で変更されません。
制御変数 %s は、ファイル有効範囲を 持ちますが、ループの内側で変更されません。
ループ本体の中で、制御変数'%s'が変更されています。
ループの制御変数 %s の 制御変数のアドレスを得ています。
ループの制御変数を 推測することができません。
ループ制御変数が複数ある可能性があります。
このトークンは疑わしい NULL ポインタ定数です。
ビットフィールドの大きさの指定に %s が直接使用されています。
コメントのない空の文が、それ自身だけで 1 行に置かれています。
空の文は、それ自身だけを 1 行に置くべきです。
代入されるオブジェクトの有効範囲が代入されるオブジェクトの有効範囲よりもより制限されていま
す。
ローカル変数のアドレスがそのメモリが開放された後も維持される静的変数に代入されています。
ファイル有効範囲静的変数, '%s', は一つの関数からしかアクセスされていません。
static 関数 '%s()'は、この翻訳単位内で使用されていません。
値のテストは明示的に行うべきです。
*p++ の意味は *(p++) であり、(*p)++ ではありません。この式には副作用がありません。
Index[Array] は Array[Index] と同等ですが、より混乱を生じ易い形式です。
式文の最上位に冗長な演算子が含まれています。
式文のトップ・レベルに不要なキャストがあります。
おそらくビット演算子ではなくて、論理演算子を意図しています。
':'演算子の片側の式に副作用がありません。
カンマ演算子の右側に副作用がなく、その値は使用されません。
論理演算子の右側に副作用がありません
マクロ定義に型修飾子 '%s'が含まれています。
関数型マクロよりも関数を使用すべきです。
マクロの実引数は括弧で囲むべきです。
マクロ本体のただ一つしかない対象物を()で囲っていません。
数字マクロ本体が()で囲われていません。
リテラルマクロ本体が()で囲われていません。
© 2003 Programming Research Limited / (株)東陽テクニカ
29
警告
番号
3436
3437
3438
3439
3611
3625
3660
3661
3662
3663
3664
3670
3671
3672
3680
3681
3682
3683
3890
3891
3892
3893
3894
4113
4131
4700
メッセージ
マクロ定義が宣言済みの識別子を隠蔽します。
[U] 'assert'マクロを抑制して、この名前の関数を呼べるようにしています。未定義の振る舞いを生
じます。
[U] 'assert'マクロを#undef してその名前の関数を呼べるようにすると、未定義の振る舞いになりま
す。
マクロはキーワードの再定義に使用してはいけません。
単なる char と負の定数との比較には、移植性がありません。
char 型の宣言には、明示的に unsigned または signed を付けるべきです。
1 ビットの符号付きビット・フィールドは-1 と 0 を表す事が出来ます。
単なる int のビットフィールドと 0 との比較には、移植性がありません。
単なる int のビットフィールドと負の定数との比較には、移植性がありません。
名前無しビットフィールドを宣言しています。
'.'による個々のビット選択は ISO 標準に準拠しません。
この呼出しについての関数の再帰的呼出しがあります。
関数へのポインタを介した関数呼出しです。
const ではない関数へのポインタを使用しています。
[U]配列の領域外を指しています。
配列の領域外を指す可能性があります。
インデックスが要素数より大きい値を取るかもしれません。
配列の終端の 1 つ先の要素の位置を指しています。
左シフトされた式をより大きい型へキャストしています。
右シフトされた式をより大きな型へキャストしています。
明示的なキャストは他の型への暗黙的なキャストです。
左シフトされた式をより小さい型へキャストしています。
右シフトされた式をより小さな型へキャストしています。
関係演算子の両側のオペランドが論理式です。
符号付きのオペランドを左シフトしています。
メトリックス %s の値が閾値を超えています。
© 2003 Programming Research Limited / (株)東陽テクニカ
30
付録B.
付録
B.
変更された
されたメッセージ
変更
された
メッセージ
警告
番号
メッセージ
160
[U] %s 番目の変換指定子はサポートされていません。
161
[U] %s 番目の変換指定子'I'または'd'に未知のフラグが使われています。
162
[U] %s 番目の変換指定子'o'に未知のフラグが使われています。
163
[U] %s 番目の変換指定子'u'に未知のフラグが使われています。
164
[U] %s 番目の変換指定子'x'に未知のフラグが使われています。
165
[U] %s 番目の変換指定子'X'に未知のフラグが使われています。
166
[U] %s 番目の変換指定子'f'に未知のフラグが使われています。
167
[U] %s 番目の変換指定子'e'に未知のフラグが使われています。
168
[U] %s 番目の変換指定子'E'に未知のフラグが使われています。
169
[U] %s 番目の変換指定子'g'に未知のフラグが使われています。
170
[U] %s 番目の変換指定子'G'に未知のフラグが使われています。
171
[U] %s 番目の変換指定子'c'に未知のフラグが使われています。
172
[U] %s 番目の変換指定子'%%'に未知のフラグが使われています。
173
[U] %s 番目の変換指定子's'に未知のフラグが使われています。
174
[U] %s 番目の変換指定子'n'未知のフラグが使われています。
175
[U] %s 番目の変換指定子'p'に未知のフラグが使われています。
176
[U] %s 番目の変換指定子は未知の仕様です。
177
[U] フィールド幅が 509 文字を超えました。
178
[U] 精度幅が 509 文字を超えました。
179
[U] 変換指定子 '%s' と実引数の型が合っていません。
184
[U] %s 番目の変換指定子を満足させるための実引数が足りません。
185
[U] 変換指定子で指定した数より多くの実引数で呼び出されています。
186
[U] 少なくとも一つの実引数を使って呼び出さなければいけません。
190
[U] %s 番目の変換指定子はサポートされていません。
191
[U] %s 番目の変換指定子'd/I/n'に未知のフラグが使われています。
192
[U] %s 番目の変換指定子'o'に未知のフラグが使われています。
193
[U] %s 番目の変換指定子'u'に未知のフラグが使われています。
194
[U] %s 番目の変換指定子'x/X'に未知のフラグが使われています。
195
[U] %s 番目の変換指定子'e/E/f/g/G'に未知のフラグが使われています。
© 2003 Programming Research Limited / (株)東陽テクニカ
31
警告
番号
メッセージ
196
[U] %s 番目の変換指定子's'に未知のフラグが使われています。
197
[U] %s 番目の変換指定子'p'に未知のフラグが使われています。
198
[U] %s 番目の変換指定子'%%'に未知のフラグが使われています。
199
[U] %s 番目の変換指定子'['に未知のフラグが使われています。
200
[U] %s 番目の変換指定子'c'に未知のフラグが使われています。
201
[U] %s 番目の変換指定子は未知の仕様です。
202
[U] '[]'変換仕様の中の'-'文字は処理系に依存して定義されます。
203
[U] '[]'内の'-'の前にある文字の値が次に続く文字より大きいです。
204
[U] フィールド幅が 509 文字を超えました。
206
[U] 実引数の型が%s 番目の変換指定子と一致していません。
207
[U] 'scanf' にはデータを格納すべきオブジェクトのアドレスが必要です。
208
[U] scanset(走査文字集合:[]に囲われた文字のセット)に同じ文字が1つ以上現れています。
241
このファイルには Ctrl-Z が存在します。- これは PC から転送されたコードですか?
274
定数の値が対象の型で表現できる範囲を外れています。
280
[L] 結果は ISO で定義されている符号付きの値の範囲を超えています。
283
[L] 浮動小数点定数が、表現可能な範囲を超えています。
304
[U] 'register'として宣言された配列のアドレスを演算してはなりません。
307
[U] このキャストをポインタに対して行うことは定義されていません。
308
不完全型に対して、ポインタを含む移植性のないキャストを行っています。
308
不完全型に対して、ポインタを含む移植性のないキャストを行っています。
340
多くの K&R コンパイラは '#error'を受け付けません。
341
K&R コンパイラは ISO 文字列生成演算子 '#'をサポートしていません。
342
K&R コンパイラは ISO 文字列連結演算子 '##'をサポートしていません。
343
文字列の連結は ISO の機能です。K&R コンパイラでは機能しません。
344
K&R コンパイラは関数プロトタイプをサポートしていません。
345
旧式の K&R コンパイラは'void'を識別子として扱うでしょう。
346
%s' は ISO の予約語ですが K&R コンパイラでは認識されません。
347
K&R コンパイラは'extern'変数の初期化を許しません。
348
旧式の K&R コンパイラはビットフィールドをサポートしません。
349
単項演算子 '+' は ISO の機能です。これは全ての K&R コンパイラでサポートされているわけ
ではありません。
© 2003 Programming Research Limited / (株)東陽テクニカ
32
警告
番号
350
メッセージ
K&R コンパイラの中には'enum'をサポートしていないものや、正しくサポートをしないものがあ
ります。
352
'#elif' は全ての K&R コンパイラがサポートしているわけではありません。
446
[C] ++/--のオペランドはスカラ(算術またはポインタ)型でなくてはなりません。
447
[C] ++/--のオペランドは変更可能なオブジェクトでなければなりません。
448
[C] サイズが不明なオブジェクトへのポインタの増分(減分)はできません。
449
[C] 関数へのポインタの増分(減分)はできません。
457
[C] アドレス演算子 '&' はビットフィールドに適用できません。
475
[u] サイズが未定義のビットフィールド式です。
476
[C] 'sizeof'はビットフィールドに適用できません。
486
[C] 整数式と適合するポインタのみがポインタから減算することができます。
502
符号付きデータに対する右シフトは、算術型と論理型の両方の可能性があります。
547
[U] このタグ '%s' の宣言は、前の宣言と矛盾しています。
588
[C] ビットフィールドの幅は整数定数式でなければなりません。
592
負の'case'ラベルは全てのコンパイラに対して移植性があるわけではありません。
625
[U] '%s'は内部リンケージと外部リンケージの両方で宣言されています。振る舞いは未定義で
す。
635
[U] int 以外の型を持つビットフィールドの振る舞いは未定義です。
635
[U] int 以外の型を持つビットフィールドの振る舞いは未定義です。
644
[C] ビットフィールドの幅は'int'の幅を超えてはなりません。
645
[C]幅がゼロのビットフィールドに名前を与えることはできません。
650
[C] 関数の仮引数に違法な記憶クラス指定子が使われています。
652
[U] 識別子は関数プロトタイプの中の仮引数全てに与えるか全く与えないかどちらかであるべ
きです。
661
[U] '%s()'は、ローカルに宣言されたときに記憶クラス指定子'static'を伴っていない可能性があ
ります。
664
関数の仮引数に'(void)'型は使用できません。おそらく、仮引数リストを'(void)'にする意図だっ
たはずです。
664
関数の仮引数に'(void)'型は使用できません。おそらく、仮引数リストを'(void)'にする意図だっ
たはずです。
685
[C] 'struct'、 'union'または配列型、あるいは静的記憶期間を持つオブジェクトの初期化子は
定数式でなければなりません。
687
結合された文字列を用いて配列が初期化されていて、初期化子の数が宣言されたサイズより
小さくなっています。
© 2003 Programming Research Limited / (株)東陽テクニカ
33
警告
番号
メッセージ
688
配列のサイズが、結合された文字列を含む初期化子の数によって決定されています。
735
'switch'文の中で関係演算子や論理演算子を使うと、通常はプログラミング・エラーとなりま
す。
744
[U] ' %s()'は'void'型以外の型を返すと定義されていますが、'return'文がありません。
745
%s()'は、'void'型以外の型を返すと定義されていますが、'return;'が見つかりました。
747
[u] 'void'型の関数として定義された'%s()'内で、'return 式;'が見つかりました。
754
%s()'は、'return;'と'return 式;'の両方の文を持っています。
776
[L] 外部識別子名が他の識別子名(例 '%s')と、最初の 6 文字で一致しています。- プログラム
は ISO 準拠ではありません。
777
[U] 外部識別子名が他の識別子名(例 '%s')と、指定された文字数の範囲内で異なっていませ
ん。
778
[L] 識別子名が他の識別子名(例 '%s')と、最初の 31 文字で一致しています。- プログラムは
ISO 準拠ではありません。
779
[U] 識別子名が他の識別子名(例 '%s')と、指定された文字数の範囲内で異なっていません。
813
[U] '#include <%s>'内での' " \\ または /*の使用は未定義の振る舞いを生じます。
814
[U] '#include "%s"'内での' '\\ または /*の使用は未定義の振る舞いを生じます。
815
[L] #include <…> の名前は ISO の制約違反です。
816
[L] #include "…" の名前は ISO の制約違反です。
818
[C] '%s'を見つけることができません。適切な検索パスが設定されていないのでしょう。
819
[C] '%s'を開くことができません。適切な検索パスが設定されていないのでしょう。
820
#include'にはヘッダ名が必要です。
821
[C] '#include %s'は処理できるヘッダまたはソースファイルを特定できません。
823
[S] 予期しない #else または#elif 指令です。#else または #elif 指令は #if グループの else ブ
ランチにあってはなりません。
830
[S] 前処理指令の後には空白類と改行のみを続けられます前処理指令に対する余分なテキス
トを追加するにはコメントを使用して下さい。
831
この'#include'行で使われる'\\'は PC 用の拡張です。- '/'であると仮定します。この使い方は
移植性を損ねます。
845
[C] オブジェクト型マクロ '%s'を関数型マクロとして再定義しています。
855
前処理の結果が、前処理指令の形式を持つトークンの並びの中に存在します。
857
[L] マクロ定義の数が 1024 を超えています。 - プログラムは ISO 準拠ではありません。
858
[L] マクロ仮引数の数が 31 を超えています。 - プログラムは ISO 準拠ではありません。
859
[L] マクロ呼び出しの実引数の数が 31 を超えています。
869
#error'前処理指令:%s 解析が'#error'によって中止されました。
© 2003 Programming Research Limited / (株)東陽テクニカ
34
警告
番号
メッセージ
874
[U] 文字列リテラルとワイド文字列リテラルが隣接しています。
899
[C] '#'は前処理トークン内の区切子か'#define'内の演算子としてのみ使用できます。
918
ソースが複雑すぎます。この問題を東陽テクニカ([email protected])に連絡して下さい。
1003
[S] '#%s'はインライン・アセンブラ用の言語拡張です。
1004
[S] 対応する'#asm'前処理指令が無い '#endasm'が見つかりました。
1005
[S] '#%s'前処理指令を探している途中で、ファイルの終端に到達してしまいました。
1006
[S] このアセンブラ定数は無視されました。
1011
[S] C++コメント '//' の使用は、C 言語としては拡張仕様です。
1100
ラベル '%s' は、typedef としても宣言されています.
1301
一部の C++では '%s' は予約語です。
1303
関数型の空の仮引数並びは C++では異なる意味を持ちます。
1304
古いスタイルの関数定義'%s()' は C++への移植性がありません。
1306
'%s'に対する複数の一時的定義があります。 - C では動作しますが、C++では動作しません。
1307
名前無しの 構造体型と共用体型は C++への移行の際に移植上の問題を引き起こすかも知れ
ません。
1309
C++では、typedef '%s'既に存在する 構造体タグ/共用体タグ/'enum'タグと衝突します。
1310
'%s'は同じ構造体/共用体/'enum'に対してタグ並びに typedef として使われています。
1312
この初期化されている配列は文字列初期化子の終端の'\0'を保持しません。
1314
タグ'%s'は他の構造体/共用体の中で定義されました。
1315
C++では、'static'を指定できるのはオブジェクトまたは関数だけです。
1317
列挙型に無い値です。
1318
C++では、列挙型オブジェクトに対して += 等の複合型演算子を使用することはできません。
1319
C++では、増分と減分演算子は列挙型付きのオブジェクトには適用できません。
1323
列挙型定数の sizeof は、C++では sizeof(int)とは保証されていません。
1325
'%s()'は、'void'型以外の型を返すと定義されていますが 'return;'を含んでいます。これは
C++では許されません。
1327
C++では、マクロ__STDC__ の値や存在は何も保証されていません。
1328
関数宣言の中でタグ付けされた型が定義されています。
1999
外部識別子 %s のインタフェース定義ファイルは既に存在します。
2002
この 'switch' 文には 'default' ラベルがありません。
2003
空でない 'case' ラベルは明示的な 'break' 文で終わるべきです。
2004
'if'-'else'-'if'文を完結させる 'else'文が存在しません。
© 2003 Programming Research Limited / (株)東陽テクニカ
35
警告
番号
メッセージ
2006
関数'%s()' には複数の'return'文が存在します。
2008
case'ラベルまたは'default'ラベルの前に'switch'文本体のコードが存在します。
2010
関数'%s()' を呼び出してはいけません。
2100
汎整数拡張 :unsigned char は signed int に拡張されます。
2101
汎整数拡張 :unsigned short は signed int に拡張されます。
2547
タグ'%s'を使うことによってより広域な宣言を隠しています。
3002
関数'%s()'を定義する際に識別子リストと仮引数宣言を分離して記述するのは、旧式の方法で
す。
3101
単項演算子 '-' を unsigned int または unsigned long に対して使用すると、結果が'unsigned'
になってしまいます。
3104
#pragma '%s' は不正な実引数を持つので無視されました。
3105
#pragma ブロックが、#pragma %s によって閉じられていません。
3106
この #指令は無視されています。この#指令は#pragma %s を期待する#pragma ブロックの中に
存在します。
3108
[S] 入れ子(ネスティング)のコメントは ISO 標準では認識されないため、使用するべきではあり
ません。
3110
この ','の左オペランドは何の副作用もありません。
3120
整数定数'%s'が直接使用されています。これは避けるべきです。
3121
浮動小数点型定数'%s'が直接使用されています。これは避けるべきです。
3122
文字列定数"%s"が直接使用されています。これは避けるべきです。
3123
文字定数'%s'が直接使用されています。これは避けるべきです。
3205
識別子 '%s'はその有効範囲で使用されていません。削除可能です。
3208
'%s()' は値を返しますが、無視されていることがあります。
3209
'%s()' は値を返しますが、いつも無視されています。
3210
識別子 '%s'は広域宣言されましたが使用されていません。
3211
識別子 '%s'は広域定義されましたが使用されていません。
3302
定数式での符号無しの引き算の結果が 0 を下回ったため、上位ビットが失われました。
3303
定数式での符号無しの演算の結果が最大値を超えたため、上位ビットが失われました。
3304
定数式での符号無しの掛け算の結果が最大値を超えたため、上位ビットが失われました。
3305
より制限された境界調整へのポインタキャストです。
3309
この'switch'文の条件式は定数式です。
3310
この構造体タグ'%s'の定義はまだ、与えられていません。
© 2003 Programming Research Limited / (株)東陽テクニカ
36
警告
番号
メッセージ
3311
このブロックの外側からラベル '%s' へジャンプしています。ローカルな初期化は行なわれませ
ん。
3312
[U] ラベル '%s' が、そこにジャンプすると実行されないローカルな初期化文を含むブロック内
にあります。
3313
この構造体タグ'%s'の定義が見つかりません。
3316
符号無しのデータを 0 と比較するのは危険です。
3323
このループの制御条件が定数値です。
3330
関数 '%s()'が、可変個の実引数を伴って呼び出されています。
3331
[U] '%s()'の値が使用されていますが、値を返しません。この振る舞いは未定義です。
3332
この '#if…' で使用されているマクロ '%s'が定義されていません。
3333
break'文は 'switch'文の中でのみ使用されるべきです。
3334
この'%s'の宣言はより広域な宣言を隠しています。
3335
関数プロトタイプがありません。省略時解釈で'extern int %s'が挿入されます。
3336
この列挙型はまだ定義されていません。
3409
マクロ本体が()で囲われていません。
3410
マクロ仮引数が()で囲われていません。
3411
マクロ定義の中に、対になっていない角括弧または括弧があります。
3412
マクロ定義の中に、'{', '}', ';' またはキーワード予約語が含まれています。
3413
このマクロ定義は typedef に置き換えることができるはずです。
3414
マクロ定義に記憶域修飾子 '%s'が含まれています。
3415
演算子 '&&', '||', '? :' の右オペランドに副作用があります。
3416
この論理式に副作用があります。
3418
カンマ演算子が for ループのヘッダで使用されています。
3419
for'文の初期化式に副作用がありません。
3420
for'文の増分式に副作用がありません。
3607
仮引数 '%s'は関数として宣言されているので、関数ポインタに暗黙の変換が行われます。
3612
単なる char と 0 との比較には、移植性がありません。
3613
コンパイラによってはこの 8 または 9 を 8 進数定数の一部とみなします。
3616
文字定数はプリプロセッサの演算での値と実際のコードでの値が異なるかもしれません。
3617
構造体/共用体 の代入は、古いコンパイラではサポートしていません。
3621
ビットフィールドは移植性が良くありません -古いコンパイラによってはそれをサポートしないも
のもあります。
© 2003 Programming Research Limited / (株)東陽テクニカ
37
警告
番号
メッセージ
3623
関数に構造体または共用体を値で渡しています。
3624
関数から構造体または共用体を値で返しています。
3651
サイズが不明な配列に typedef を使用することは予期できない結果を引き起こします。
3700
暗黙のキャスト:char から signed char。移植性のない単なる char からの型変換です。
3701
暗黙のキャスト:char から unsigned char。移植性のない単なる char からの型変換です。
3703
暗黙のキャスト:char から unsigned short。移植性のない単なる char からの型変換です。
3705
暗黙のキャスト:char から unsigned int。移植性のない単なる char からの型変換です。
3707
暗黙のキャスト:char から long。移植性のない単なる char からの型変換です。
3708
暗黙のキャスト:char から float。整数から浮動小数点への型変換です。
3709
暗黙のキャスト:char から doublet。整数から浮動小数点への型変換です。
3710
暗黙のキャスト:char から long double。整数から浮動小数点への型変換です。
3711
暗黙のキャスト:unsigned char から char。移植性のない単なる char への型変換です。
3712
暗黙のキャスト:unsigned char から signed char。符号無しから符号付きへの型変換です。
3713
暗黙のキャスト:unsigned char から short。
3715
暗黙のキャスト:unsigned char から int。
3717
暗黙のキャスト:unsigned char から long。
3719
暗黙のキャスト:unsigned char から float。 整数から浮動小数点数への変換です。
3720
暗黙のキャスト:unsigned char から double。 整数から浮動小数点数への変換です。
3721
暗黙のキャスト:unsigned char から long double。 整数から浮動小数点数への変換です。
3722
暗黙のキャスト:signed char から char。 単なる char への移植性のない変換です。
3723
暗黙のキャスト:signed char から unsigned char。 符号付きから符号無しへの変換です。
3725
暗黙のキャスト:signed char から unsigned short。 符号付きから符号無しへの変換です。
3727
暗黙のキャスト:signed char から unsigned int。 符号付きから符号無しへの変換です。
3729
暗黙のキャスト:signed char から unsigned long。 符号付きから符号無しへの変換です。
3730
暗黙のキャスト:signed char から float。 整数から浮動小数点数への変換です。
3731
暗黙のキャスト:signed char から double。 整数から浮動小数点数への変換です。
3732
暗黙のキャスト:signed char から long double。 整数から浮動小数点数への変換です。
3733
暗黙のキャスト:short から char。 より小さな型への変換。
3734
暗黙のキャスト:short から signed char。 より小さな型への変換です。
3735
暗黙のキャスト:short から unsigned char。符号付きから より小さな符号無しへの変換です。
3736
暗黙のキャスト:short から unsigned short。 符号付きから符号無しへの変換です。
© 2003 Programming Research Limited / (株)東陽テクニカ
38
警告
番号
メッセージ
3738
暗黙のキャスト:short から unsigned int。 符号付きから符号無しへの変換です。
3740
暗黙のキャスト:short から unsigned long。 符号付きから符号無しへの変換です。
3741
暗黙のキャスト:short から float。 整数から浮動小数点数への変換です。
3742
暗黙のキャスト:short から double。 整数から浮動小数点数への変換です。
3743
暗黙のキャスト:short から long double。 整数から浮動小数点数への変換です。
3744
暗黙のキャスト:unsigned short から char。 より小さな型への変換。単なる char への移植性の
ない変換です。
3745
暗黙のキャスト:unsigned short から signed char。符号無しから より小さな符号付きへの変換
です。
3746
暗黙のキャスト:unsigned short から unsigned char。 より小さな型への変換です。
3747
暗黙のキャスト:unsigned short から short。 符号無しから符号付きへの変換です。
3748
暗黙のキャスト:unsigned short から int。
3750
暗黙のキャスト:unsigned short から long。
3752
暗黙のキャスト:unsigned short から float。 整数から浮動小数点数への変換です。
3753
暗黙のキャスト:unsigned short から double。 整数から浮動小数点数への変換です。
3754
暗黙のキャスト:unsigned short から long double。 整数から浮動小数点数への変換です。
3755
暗黙のキャスト:int から char。 より小さな型への変換。単なる char への移植性のない変換で
す。
3756
暗黙のキャスト:int から signed char。 より小さな型への変換です。
3757
暗黙のキャスト:int から unsigned char。 符号付きから より小さな符号無しへの変換です。
3758
暗黙のキャスト:int から short。 より小さな型への変換です。
3759
暗黙のキャスト:int から unsigned short。 符号付きから より小さな符号無しへの変換です。
3760
暗黙のキャスト:int から unsigned int。 符号付きから符号無しへの変換です。
3762
暗黙のキャスト:int から unsigned long。 符号付きから符号無しへの変換です。
3763
暗黙のキャスト:int から float。 整数から浮動小数点数への変換です。
3764
暗黙のキャスト:int から double。 整数から浮動小数点数への変換です。
3765
暗黙のキャスト:int から long double。 整数から浮動小数点数への変換です。
3766
暗黙のキャスト:unsigned int から char。 小さな型への変換。単なる char への移植性のない変
換です。
3767
暗黙のキャスト:unsigned int から signed char。符号無しから より小さな符号付きへの変換で
す。
3768
暗黙のキャスト:unsigned int から unsigned char。 より小さな型への変換です。
3769
暗黙のキャスト:unsigned int から short。 符号無しから より小さな符号付きへの変換です。
© 2003 Programming Research Limited / (株)東陽テクニカ
39
警告
番号
メッセージ
3770
暗黙のキャスト:unsigned int から unsigned short。 より小さな型への変換です。
3771
暗黙のキャスト:unsigned int から int。 符号無しから符号付きへの変換です。
3772
暗黙のキャスト:unsigned int から long。
3774
暗黙のキャスト:unsigned int から float。 整数から浮動小数点数への変換です。
3775
暗黙のキャスト:unsigned int から double。 整数から浮動小数点数への変換です。
3776
暗黙のキャスト:unsigned int から long double。 整数から浮動小数点数への変換です。
3777
暗黙のキャスト:long から char。 より小さな型への変換。単なる char への移植性のない変換
です。
3778
暗黙のキャスト:long から signed char。 より小さな型への変換です。
3779
暗黙のキャスト:long から unsigned char。符号付きから より小さな符号無しへの変換です。
3780
暗黙のキャスト:long から short。 より小さな型への変換です。
3781
暗黙のキャスト:long から unsigned short。符号付きから より小さな符号無しへの変換です。
3782
暗黙のキャスト:long から int。 より小さな型への変換です。
3783
暗黙のキャスト:long から unsigned int。符号付きから より小さな符号無しへの変換です。
3784
暗黙のキャスト:long から unsigned long。符号付きから符号無しへの変換です。
3785
暗黙のキャスト:long から float。 整数から浮動小数点数への変換です。
3786
暗黙のキャスト:long から double。 整数から浮動小数点数への変換です。
3787
暗黙のキャスト:long から long double。 整数から浮動小数点数への変換です。
3788
暗黙のキャスト:unsigned long から char。 より小さな型への変換。単なる char への移植性の
ない変換です。
3789
暗黙のキャスト:unsigned long から signed char。符号無しから より小さな符号付きへの変換で
す。
3790
暗黙のキャスト:unsigned long から unsigned char。 より小さな型への変換です。
3791
暗黙のキャスト:unsigned long から short。符号無しから より小さな符号付きへの変換です。
3792
暗黙のキャスト:unsigned long から unsigned short。 より小さな型への変換です。
3793
暗黙のキャスト:unsigned long から int。符号無しから より小さな符号付きへの変換です。
3794
暗黙のキャスト:unsigned long から unsigned int。 より小さな型への変換です。
3795
暗黙のキャスト:unsigned long から long。 符号無しから符号付きへの変換です。
3796
暗黙のキャスト:unsigned long から float。 整数から浮動小数点数への変換です。
3797
暗黙のキャスト:unsigned long から double。 整数から浮動小数点数への変換です。
3798
暗黙のキャスト:unsigned long から long double。 整数から浮動小数点数への変換です。
3799
暗黙のキャスト:float から char。 精度の損失が起こり得ます。
© 2003 Programming Research Limited / (株)東陽テクニカ
40
警告
番号
メッセージ
3800
暗黙のキャスト:float から signed char。 精度の損失が起こり得ます。
3801
暗黙のキャスト:float から unsigned char。 精度の損失が起こり得ます。
3802
暗黙のキャスト:float から short。 精度の損失が起こり得ます。
3803
暗黙のキャスト:float から unsigned short。 精度の損失が起こり得ます。
3804
暗黙のキャスト:float から int。 精度の損失が起こり得ます。
3805
暗黙のキャスト:float から unsigned int。 精度の損失が起こり得ます。
3806
暗黙のキャスト:float から long。 精度の損失が起こり得ます。
3807
暗黙のキャスト:float から unsigned long。 精度の損失が起こり得ます。
3810
暗黙のキャスト:double から char。 精度の損失が起こり得ます。
3811
暗黙のキャスト:double から signed char。 精度の損失が起こり得ます。
3812
暗黙のキャスト:double から unsigned char。 精度の損失が起こり得ます。
3813
暗黙のキャスト:double から short。 精度の損失が起こり得ます。
3814
暗黙のキャスト:double から unsigned short。 精度の損失が起こり得ます。
3815
暗黙のキャスト:double から int。 精度の損失が起こり得ます。
3816
暗黙のキャスト:double から unsigned int。 精度の損失が起こり得ます。
3817
暗黙のキャスト:double から long。 精度の損失が起こり得ます。
3818
暗黙のキャスト:double から unsigned long。 精度の損失が起こり得ます。
3819
暗黙のキャスト:double から float。 精度の損失が起こり得ます。
3821
暗黙のキャスト:long double から char。 精度の損失が起こり得ます。
3822
暗黙のキャスト:long double から signed char。 精度の損失が起こり得ます。
3823
暗黙のキャスト:long double から unsigned char。 精度の損失が起こり得ます。
3824
暗黙のキャスト:long double から short。 精度の損失が起こり得ます。
3825
暗黙のキャスト:long double から unsigned short 。 精度の損失が起こり得ます。
3826
暗黙のキャスト:long double から int。 精度の損失が起こり得ます。
3827
暗黙のキャスト:long double から unsigned int。 精度の損失が起こり得ます。
3828
暗黙のキャスト:long double から long。 精度の損失が起こり得ます。
3829
暗黙のキャスト:long double から unsigned long。 精度の損失が起こり得ます。
3830
暗黙のキャスト:long double から float。 精度の損失が起こり得ます。
3831
暗黙のキャスト:long double から double。 精度の損失が起こり得ます。
3900
char の値が signed char %s()から返されています。単なる char の移植性のない型変換です。
3901
char の値が unsigned char %s()から返されています。単なる char の移植性のない型変換で
す。
© 2003 Programming Research Limited / (株)東陽テクニカ
41
警告
番号
メッセージ
3903
char の値が unsigned short %s()から返されています。単なる char の移植性のない型変換で
す。
3905
char の値が unsigned int %s()から返されています。単なる char の移植性のない型変換です。
3907
char の値が unsigned long %s()から返されています。単なる char の移植性のない型変換で
す。
3908
char の値が float %s()から返されています。整数から浮動小数点数への変換です。
3909
char の値が double %s()から返されています。整数から浮動小数点数への変換です。
3910
char の値が long double %s()から返されています。整数から浮動小数点数への変換です。
3911
unsigned char の値が char %s()から返されています。単なる char への移植性のない変換で
す。
3912
unsigned char の値が signed char %s()から返されています。符号無しから符号付きへの変換で
す。
3913
unsigned char の値が short %s()から返されています。
3915
unsigned char の値が int %s()から返されています。
3917
unsigned char の値が long %s()から返されています。
3919
unsigned char の値が float %s()から返されています。整数から浮動小数点数への変換です。
3920
unsigned char の値が double %s()から返されています。整数から浮動小数点数への変換で
す。
3921
unsigned char の値が long double %s()から返されています。整数から浮動小数点数への変換
です。
3922
signed char の値が char %s()から返されています。単なる char への移植性のない変換です。
3923
signed char の値が unsigned char %s()から返されています。符号付きから符号無しへの変換で
す。
3925
signed char の値が unsigned short %s()から返されています。符号付きから符号無しへの変換
です。
3927
signed char の値が unsigned int %s()から返されています。符号付きから符号無しへの変換で
す。
3929
signed char の値が unsigned long %s()から返されています。符号付きから符号無しへの変換で
す。
3930
signed char の値が float %s()から返されています。整数から浮動小数点数への変換です。
3931
signed char の値が double %s()から返されています。整数から浮動小数点数への変換です。
3932
signed char の値が long double %s()から返されています。整数から浮動小数点数への変換で
す。
3933
short の値が char %s()から返されています。より小さな型への変換です。単なる char への移植
性のない変換です。
© 2003 Programming Research Limited / (株)東陽テクニカ
42
警告
番号
メッセージ
3934
short の値が signed char %s()から返されています。より小さな型への変換です。
3935
short の値が unsigned char %s()から返されています。符号付きから小さな符号無しへの変換
です。
3936
short の値が unsigned short %s()から返されています。符号付きから符号無しへの変換です。
3938
short の値が unsigned int %s()から返されています。符号付きから符号無しへの変換です。
3940
short の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。
3941
short の値が float %s()から返されています。整数から浮動小数点数への変換です。
3942
short の値が double %s()から返されています。整数から浮動小数点数への変換です。
3943
short の値が long double %s()から返されています。整数から浮動小数点数への変換です。
3944
unsigned short の値が char %s()から返されています。より小さな型への変換です。単なる char
への移植性のない変換です。
3945
unsigned short の値が signed char %s()から返されています。符号無しから より小さな符号付き
への変換です。
3946
unsigned short の値が unsigned char %s()から返されています。より小さな型への変換です。
3947
unsigned short の値が short %s()から返されています。符号無しから符号付きへの変換です。
3948
unsigned short の値が int %s()から返されています。
3950
unsigned short の値が long %s()から返されています。
3952
unsigned short の値が float %s()から返されています。整数から浮動小数点数への変換です。
3953
unsigned short の値が double %s()から返されています。整数から浮動小数点数への変換で
す。
3954
unsigned short の値が long double %s()から返されています。整数から浮動小数点数への変換
です。
3955
int の値が char %s()から返されています。より小さな型への変換です。単なる char への移植性
のない変換です。
3956
int の値が signed char %s()から返されています。より小さな型への変換です。
3957
int の値が unsigned char %s()から返されています。符号付きから より小さな符号無しへの変換
です。
3958
int の値が short %s()から返されています。より小さな型への変換です。
3959
int の値が unsigned short %s()から返されています。符号付きから より小さな符号無しへの変
換です。
3960
int の値が unsigned int %s()から返されています。符号付きから符号無しへの変換です。
3962
int の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。
3963
int の値が float %s()から返されています。整数から浮動小数点数への変換です。
3964
int の値が double %s()から返されています。整数から浮動小数点数への変換です。
© 2003 Programming Research Limited / (株)東陽テクニカ
43
警告
番号
メッセージ
3965
int の値が long double %s()から返されています。整数から浮動小数点数への変換です。
3966
unsigned int の値が char %s()から返されています。より小さな型への変換です。単なる char へ
の移植性のない変換です。
3967
unsigned int の値が signed char %s()から返されています。符号無しから より小さな符号付きへ
の変換です。
3968
unsigned int の値が unsigned char %s()から返されています。より小さな型への変換です。
3969
unsigned int の値が short %s()から返されています。符号無しから より小さな符号付きへの変
換です。
3970
unsigned int の値が unsigned short %s()から返されています。より小さな型への変換です。
3971
unsigned int の値が int %s()から返されています。符号無しから符号付きへの変換です。
3972
unsigned int の値が long %s()から返されています。
3974
unsigned int の値が float %s()から返されています。整数から浮動小数点数への変換です。
3975
unsigned int の値が double %s()から返されています。整数から浮動小数点数への変換です。
3976
unsigned int の値が long double %s()から返されています。整数から浮動小数点数への変換で
す。
3977
long の値が char %s()から返されています。より小さな型への変換です。単なる char への移植
性のない変換です。
3978
long の値が signed char %s()から返されています。より小さな型への変換です。
3979
long の値が unsigned char %s()から返されています。符号付きから より小さな符号無しへの変
換です。
3980
long の値が short %s()から返されています。より小さな型への変換です。
3981
long の値が unsigned short %s()から返されています。符号付きから より小さな符号無しへの変
換です。
3982
long の値が int %s()から返されています。より小さな型への変換です。
3983
long の値が unsigned int %s()から返されています。符号付きから より小さな符号無しへの変換
です。
3984
long の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。
3985
long の値が float %s()から返されています。整数から浮動小数点数への変換です。
3986
long の値が double %s()から返されています。整数から浮動小数点数への変換です。
3987
long の値が long double %s()から返されています。整数から浮動小数点数への変換です。
3988
unsigned long の値が char %s()から返されています。より小さな型への変換です。単なる char
への移植性のない変換です。
3989
unsigned long の値が signed char %s()から返されています。符号無しから より小さな符号付き
への変換です。
3990
unsigned long の値が unsigned char %s()から返されています。より小さな型への変換です。
© 2003 Programming Research Limited / (株)東陽テクニカ
44
警告
番号
メッセージ
3991
unsigned long の値が short %s()から返されています。符号無しから より小さな符号付きへの変
換です。
3992
unsigned long の値が unsigned short %s()から返されています。より小さな型への変換です。
3993
unsigned long の値が int %s()から返されています。符号無しから より小さな符号付きへの変換
です。
3994
unsigned long の値が unsigned int %s()から返されています。より小さな型への変換です。
3995
unsigned long の値が long %s()から返されています。符号無しから符号付きへの変換です。
3996
unsigned long の値が float %s()から返されています。整数から浮動小数点数への変換です。
3997
unsigned long の値が double %s()から返されています。整数から浮動小数点数への変換で
す。
3998
unsigned long の値が long double %s()から返されています。整数から浮動小数点数への変換
です。
3999
float の値が char %s()から返されています。精度の損失が起こり得ます。
4000
float の値が signed char %s()から返されています。精度の損失が起こり得ます。
4001
float の値が unsigned char %s()から返されています。精度の損失が起こり得ます。
4002
float の値 short %s()から返されています。精度の損失が起こり得ます。
4003
float の値が unsigned short %s()から返されています。精度の損失が起こり得ます。
4004
float の値が int %s()から返されています。精度の損失が起こり得ます。
4005
float の値が unsigned int %s()から返されています。精度の損失が起こり得ます。
4006
float の値が long %s()から返されています。精度の損失が起こり得ます。
4007
float の値が unsigned long %s()から返されています。精度の損失が起こり得ます。
4010
double の値が char %s()から返されています。精度の損失が起こり得ます。
4011
double の値が signed char %s()から返されています。精度の損失が起こり得ます。
4012
double の値が unsigned char %s()から返されています。精度の損失が起こり得ます。
4013
double の値が short %s()から返されています。精度の損失が起こり得ます。
4014
double の値が unsigned short %s()から返されています。精度の損失が起こり得ます。
4015
double の値が int %s()から返されています。精度の損失が起こり得ます。
4016
double の値が unsigned int %s()から返されています。精度の損失が起こり得ます。
4017
double の値が long %s()から返されています。精度の損失が起こり得ます。
4018
double の値が unsigned long %s()から返されています。精度の損失が起こり得ます。
4019
double の値が float %s()から返されています。精度の損失が起こり得ます。
4021
long double の値が char %s()から返されています。精度の損失が起こり得ます。
4022
long double の値が signed char %s()から返されています。精度の損失が起こり得ます。
© 2003 Programming Research Limited / (株)東陽テクニカ
45
警告
番号
メッセージ
4023
long double の値が unsigned char %s()から返されています。精度の損失が起こり得ます。
4024
long double の値が short %s()から返されています。精度の損失が起こり得ます。
4025
long double の値が unsigned short %s()から返されています。精度の損失が起こり得ます。
4026
long double の値が int %s()から返されています。精度の損失が起こり得ます。
4027
long double の値が unsigned int %s()から返されています。精度の損失が起こり得ます。
4028
long double の値が long %s()から返されています。精度の損失が起こり得ます。
4029
long double の値が unsigned long %s()から返されています。精度の損失が起こり得ます。
4030
long double の値が float %s()から返されています。精度の損失が起こり得ます。
4031
long double の値が double %s()から返されています。精度の損失が起こり得ます。
4101
ビット演算子 '&' の両側のオペランドが論理式です。
4102
ビット演算子 '|' の両側のオペランドが論理式です。
4103
算術演算子の両側のオペランドが論理式です。
4104
算術演算子の左側のオペランドが論理式です。
4105
算術演算子の右側のオペランドが論理式です。
4106
論理積演算子 '&&' の両側のオペランドが算術式です。
4107
論理和演算子 '||' の両側のオペランドが算術式です。
4108
論理演算子の左側のオペランドが算術式です。
4109
論理演算子の右側のオペランドが算術式です。
4110
論理否定演算子 '!' が算術式に使用されています。
4111
関係演算子の右側のオペランドが論理式です。
4112
関係演算子の左側のオペランドが論理式です。
4120
代入時に、整数式が暗黙的により大きな型にキャストされます。
4123
代入時に、'float'式が暗黙的に 'double'にキャストされます。
4124
代入時に、'float'式が暗黙的に 'long double'にキャストされます。
4125
代入時に、'double'式が暗黙的に 'long double'にキャストされます。
4130
符号付きデータに対するビット単位の演算は未定義の結果になります。
4140
関数の戻り値にローカルなデータのアドレスを返しています。
4150
文字の 'l' と '1' だけが使用されている名前 '%s' は混乱を引き起こすかもしれません。
4151
文字の '0' と 'O' だけが使用されている名前 '%s' は混乱を引き起こすかもしれません。
4152
文字の 'l' と '1' が使用されている名前 '%s' は混乱を引き起こすかもしれません。
4153
文字の '0' と 'O' が使用されている名前 '%s' は混乱を引き起こすかもしれません。
注)ここに記載されいる警告文以外にも用語の統一などで若干の変更を加えたものがあります。
© 2003 Programming Research Limited / (株)東陽テクニカ
46
付録C.
付録
C. 削除された
削除されたメッセージ
されたメッセージ
警告
メッセージ
番号
6 実引数が範囲外です。
99 評価版のため各メッセージは2度までしか表示されません。
155 ヒープ領域が足りません。
156 メモリー・マネージャのノードが足りません。
157 メモリー・マネージャのブロックが足りません。
205 精度幅が 509 文字を超えました。
236 拡張表記の値が移植性の良い'char'型の値の範囲(0-127)を超えています。
247 2 文字表記を全てのコンパイラがサポートしている訳ではありません。
ワイド文字定数とワイド文字列リテラルは、まだ全てのコンパイラでサポートされている訳ではあり
260
ません。
[C] ファイルの終端の印の前には、改行文字が必要です。このエラーを修正するために最終行
270
に改行文字を付け加えるべきです。
[u] 副作用完了点の間で2つ以上のデータ・アイテムが変更されるかもしれません。 - データが
404
オーバーラップすると危険です。
[u] 副作用完了点の間でデータ・アイテムが変更され、アクセスされます。 - データがオーバー
405
ラップすると危険です。
[u] 副作用完了点の間でデータ・アイテムが変更され、アクセスされるかもしれません。 - データ
406
がオーバーラップすると危険です。
[L] 括弧の入れ子(ネスティング)が 32 を超えました。- プログラムは ISO 規格に適合していませ
410
ん。
421 [L] 関数の実引数の数が 31 を超えます。- プログラムは ISO 規格に適合していません。
461 [C] 'const'からそうでないものへキャストしないで下さい。
521 [C] 'int [ pointer ]' はいですが、広く受け入れられている書き方は 'pointer [ int ]'です。
566 '*'と'/'演算子には算術オペランドが必要です。
567 '+'には、算術型のオペランド又はポインタと整数型のオペランドが必要です。
568 ポインタ '-' ポインタ、又はポインタ '-' 汎整数のオペランドが必要です。
569 '-' には、算術オペランド又は2つのポインタオペランドが必要です。
570 '*'と'/'演算子には算術オペランドが必要です。
571 '%s'には、汎整数型オペランドが必要です。
572 '<<'と'>>'には汎整数型のオペランドが必要です。
573 '<', '>', '<=', '>=' には算術またはポインタ演算子が必要です。
574 '=='と'!='には、算術型またはポインタ型のオペランドが必要です。
575 '&','|','^'には、整数型のオペランドが必要です。
[L] 宣言子の中の修飾子の数が 12 を超えています。- プログラムは ISO 規格に適合していま
609
せん。
[L] 宣言子の中での括弧の入れ子(ネスティング)の数が 31 を超えました。- プログラムは ISO
610
規格に適合していません。
[L] '構造体(struct)'又は'共用体(union)'型の入れ子(ネスティング)の数が 15 を超えました。611
プログラムは ISO 規格に適合していません。
613 [L] 仮引数の数が 31 を超えます。- プログラムは ISO 規格に適合していません。
[L] 1 つのブロック中におけるブロック有効範囲をもつ識別子の数が 127 を超えました。- プログ
614
ラムは ISO 規格に適合していません。
© 2003 Programming Research Limited / (株)東陽テクニカ
47
警告
番号
615
619
669
691
692
700
710
720
721
730
748
749
750
751
822
840
860
870
871
876
900
908
909
910
912
921
1016
1017
1200
1201
1202
1203
1316
1320
1321
1326
1600
メッセージ
[L] 外部識別子の数が1つのファイルで 511 を超えます。- プログラムは ISO 規格に適合してい
ません。
[C] 修飾子 '%s' は一度だけ表れる事が許されています。
型名は、ファイル有効範囲でのみ宣言されるべきです。
'const'ではないポインタを広域データに返すことは得策ではありません。
非'const'のポインタを広域(global)データへ渡さないで下さい。
各宣言は唯一つの識別子を宣言すべきです。
指定子の順番は'typedef', 記憶クラス, 型指定子の順にすべきです。そうすることで宣言が読み
易くなります。
最初の列挙子に値を指定するのを避けた方が得策です。
列挙定数の値を指定するのを避けた方が得策です。
'asm' 宣言を使用すべきではありません。
[U] '%s()'は'int'型の値を返しますが、式を指定した'return'文がありません。- 返却値は定義さ
れていません。
[U] 返却値の型を 'int' にしている '%s()'の中に 'return;' があります。このプログラムは不正な
振舞いをする可能性があります。
'union'を使うべきではありません。
匿名の'union'は、使用すべきでありません。- このような使用法はエラーの傾向があります。
[S] 予期しない#else 指令です。if 群の中では、ただ 1 つの#else が許されます。複数の条件は
#elif 指令でテストできます。
ポインタ'%s'は安全を考えて明示的に初期化すべきです。
マクロ'%s'が非常に長すぎます。-これは、クロス-モジュール・チェックから外されます。
'#pragma' は実装定義の振舞いをするので移植性を損ねます。
[U] '#' 演算子の前処理の結果は正当な文字列リテラルではありません。
[L] 論理行が 509 文字を超えました。- プログラムは ISO C 規格に適合していません。
'..'から字句を作ることができません。 - '.' で代用しています。
[C] 前処理している字句を正当な字句に変換できません。
[C] '#' と '##'演算子は'#define'前処理指令の中以外では違法です。
'{' '}', '(' ')', '[' ']' 又は '<' '>'が対応しません。
字句解析を続けるために'%s'字句を無視します。
宣言が ';'で終了していません。
未定義のプリプロセッサ命令です。この行は無視されました。
関数に '...' を使うことは避けるべきです。
'%s'が異なった typedef 名を使って再宣言されています。同じ名前を使う方が良いやり方といえ
るでしょう。
オペランドの型のシンボル名が一貫していません。
代入のオペランドの型は一貫性のないシンボリック名を使っています。
'構造体(struct)', '共用体(union)' 又は '列挙体(enum)'が2つの異なる typedef 名で宣言されて
います。これは混乱を招く可能性があります。同じ名前を使う方が良いやり方といえるでしょう。
値の代入は C++では適合する列挙子または列挙子型でなければなりません。
列挙型へのキャストは C++では、非常に厳しく制限されています。この操作は変換された値が正
式の列挙子の値になる場合にのみ定義されます。
このキャストは C++では定義されていません。キャストされた値がその型の宣言された列挙子の
1つになっていないからです。
'//' は C++ コンパイラではコメントとして扱われます。
指令は第一桁目から書き始めるべきです。
© 2003 Programming Research Limited / (株)東陽テクニカ
48
警告
メッセージ
番号
1601 スキップされた前処理指令は第一桁目から始まっていません。
1636 再帰的なマクロを使うべきではありません。
1670 再帰的なマクロを使うべきではありません。
1671 再帰的なマクロを使うべきではありません。
1681 再帰的なマクロを使うべきではありません。
1690 再帰的なマクロを使うべきではありません。
1691 再帰的なマクロを使うべきではありません。
1957 'while' は'}'の後ろに一つスペースを空けて書くべきです。
1963 'else'-'if'の中の、この if 文はそれを制御する 'else'文と同一行に書くべきです。
1966 関数 '%s' の返却値の型はその名前の上の行に分けて記述すべきです。
1967 複数引数の並びにおいて、引数 '%s' は独自の行で指定するべきです。
1968 この関数の実引数の位置は前のものとそろっていません。
2011 '%s()'を呼び出すべきではありません。コードが非構造的になるからです。
2012 '%s()'を呼び出すべきではありません。プログラムの異常終了を起こすからです。
2013 '%s()'を呼び出すべきではありません。予期しない振舞いを起こす可能性があるからです。
'%s()'を呼び出すべきではありません。全てのプラットホームが正しくこれをサポートしている訳で
2014
はないからです。
2202 この波括弧のスタイルはこのファイルの中の前のスタイルと一貫していません。
2206 この行の段付けはこれ以降の段付けと一貫していません。
2454 '%s'は'for'ループを制御しています。- ループ文の本体の中で変更すべきではありません。
'%s'が 'for'ループを制御しています。この呼び出しは、その値を変更するかも知れません。それ
2455
により望み通りではない振舞いをするでしょう。
2456 複数の制御変数を'for'文の中で使用する事は、勧められません。
実引数'%s'は、前の宣言で名前がついていません。- 宣言における引数に名前をつけることを
2657
必須としている規約があります。
2658 この実引数は前の宣言で'%s'と名付けられました。一貫した名前を使うべきです。
2659 名前のない実引数は、使用すべきではありません。
2714 各'typedef'宣言では、1つの型名のみを宣言すべきです。
2718 '%s'を、次に続く仮引数の集合の中で明示的に宣言するべきです。
文字列リテラルの中にナル文字'\0'を含めることは推奨されていません。- 文字列ライブラリの
3000
結果が予期しないものになる可能性があります。
3004 精度が異なるもの同士の算術演算は安全ではありません。
3005 ポインタの境界調整問題が起きかねません。
3119 コンマ演算子の使用は避けるべきです。
3124 #include 行のマクロ展開は信頼性がありません。この使用法は移植性を損ねます。
#include 指令に絶対パスを指定すべきではありません。- '%s'は '/' または '\'で開始されてい
3125
ます。
3126 #include 指令に相対パスを指定すべきではありません。- '%s' は '.' で開始されています。
#include 指令で相対ディレクトリを使ってファイル名を指定することは避けるべきです。'%s' に
3127
'/' または '\'が含まれています。
3128 '%s'はグローバルです。
できるなら、'%s'を最初に使用する場所の近くで宣言するべきです。変数の有効範囲をできるだ
3129
け狭くしておくことにより、将来の保守がしやすくなります。
'%s'は最後に使用されてから長い間有効範囲にとどまっています。 - {}を使用して有効範囲を狭
3130
めることを検討して下さい。
3213 明示的なキャストは避けるべきです。
© 2003 Programming Research Limited / (株)東陽テクニカ
49
警告
番号
3214
3215
3299
3300
3327
3329
3338
3339
3342
3599
3622
3702
3704
3706
3714
3716
3718
3724
3726
3728
3737
3739
3749
3751
3761
3773
3808
3809
3820
3902
3904
3906
3914
3916
3918
3924
3926
3928
メッセージ
'%s'は最後に更新されて以来ここまでアクセスされていません。最後の更新は冗長かもしれませ
ん。
'%s'は、初期化された後、この変更までアクセスされていません。- この変更を初期化で行う事が
可能かもしれません。
ローカルデータのアドレスが戻されるかも知れません。- 注意深くチェックして下さい。
ローカルデータのアドレスを関数の返却値としています。大変危険です!
符号無しの 'char' は決して負の値になりません。- このテストは正しく評価されません。
%s 番目の実引数は以前の呼び出しでの型と異なります。
整数型と浮動小数点型を混在させるのは安全ではありません。
ブール型が期待されている場所で浮動小数点の値が見つかりました。これは避けるべきです。
'%s' は浮動小数点の'for'ループのインデックスです。これは整数型に置き換えるべきです。
3 文字表記と混合するので、??文字の使用は避けるべきです。
スキップした指令の#と指令の間に空白類があります。
暗黙のキャスト: char 型から short 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: char 型から int 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: char 型から long 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: unsigned char 型から unsigned short 型への変換。暗黙のキャストは避けるべき
です。
暗黙のキャスト: unsigned char 型から unsigned int 型への変換。暗黙のキャストは避けるべきで
す。
暗黙のキャスト: unsigned char 型から unsigned long 型への変換。暗黙のキャストは避けるべき
です。
暗黙のキャスト: signed char 型から short 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: signed char 型から int 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: signed char 型から long 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: short 型から int 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: short 型から long 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: unsigned short 型から unsigned int 型への変換。暗黙のキャストは避けるべきで
す。
暗黙のキャスト: unsigned short 型から unsigned long 型への変換。暗黙のキャストは避けるべき
です。
暗黙のキャスト: int 型から long 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: unsigned int 型から unsigned long 型への変換。暗黙のキャストは避けるべきで
す。
暗黙のキャスト: float 型から double 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: float 型から long double 型への変換。暗黙のキャストは避けるべきです。
暗黙のキャスト: double 型から long double 型への変換。暗黙のキャストは避けるべきです。
char 型の値が short %s()から返されました。
char 型の値が int %s()から返されました。
char 型の値が long %s()から返されました。
unsigned char 型の値が unsigned short %s()から返されました。
unsigned char 型の値が unsigned int %s()から返されました。
unsigned char 型の値が'unsigned long %s()から返されました。
signed char 型の値が short %s()から返されました。
signed char 型の値が int %s()から返されました。
signed char 型の値が long %s()から返されました。
© 2003 Programming Research Limited / (株)東陽テクニカ
50
警告
メッセージ
番号
3937 short 型の値が'int %s()から返されました。
3939 short 型の値が long %s()から返されました。
3949 unsigned short 型の値が unsigned int %s()から返されました。
3951 unsigned short 型の値が unsigned long %s()から返されました。
3961 int 型の値が long %s()から返されました。
3973 unsigned int 型の値が unsigned long %s()から返されました。
4008 float 型の値が double %s()から返されました。
4009 float 型の値が long double %s()から返されました。
4020 double 型の値が long double %s()から返されました。
4701 このファイルにはもっとコメントがあるべきです。
4702 このファイルにはとても多くの割合でコメントが含まれています。これは読みにくくなりそうです。
'%s()' は高いノット密度を持ち、構造化されていません。ループの中で'break'や'continue'を使
4704
用するのは避けるべきです。'goto'は使用すべきではありません。
'%s()' はとても高いノット密度を持ち、構造化されていません。ループの中で'break'や'continue'
4705
を使用するのは避けるべきです。'goto'は使用すべきではありません。
'%s()' は非常に高いノット密度を持ち、構造化されていません。ループの中で'break'や
4706
'continue'を使用するのは避けるべきです。'goto'は使用すべきではありません。
'%s()' は判定と判定の間に非常にたくさんのインライン・コードを含んでいます。これらのコードの
4707
ブロックのいくつかをサブ関数にする事を考えるべきでしょう。
'%s()' は高い判定密度を持っています。サブ関数に分割して論理を明確にすると良いかもしれ
4708
ません。
4709 '%s()' はかなりの数の判定を持っており、理解するのが難しいかも知れません。
'%s()' は高い判定数を持っており、理解可能な限界を超えているかもしれません。論理の数を減
4710
らすか関数をサブ関数へ分割することによってこれを避けることができます。
'%s()' は極端な数の判定を持っています。これでは理解できないかも知れません。サブ関数に
4711
分割するべきです。
'%s()' には大変多くの戻る方向のジャンプが存在します。理解するのが難しいコードになりそうで
4712
す。
このファイルを語彙分析した結果、同じ又はよく似たコードを含むブロックがあります。これは、サ
4713
ブ関数にできるでしょう。
4714 '%s()' はおそらく長過ぎます。サブ関数に分割した方がよさそうです。
このファイル中の関数の平均行数が大きすぎます。このプログラムのモジュール化のレビューを
4715
することは有益かもしれません。
4716 '%s()' は高いパスカウントを持っています。テストするのは困難かもしれません。
4717 '%s()' は非常に高いパスカウントを持っており、テストするのは難しいかも知れません。
4718 '%s()' はおそらくテストできません。サブ関数に分割するべきです。
メトリックス・ファイル'%s'を作成できません。環境変数 QACOUTPATH の値を確認するか、'4901
OP' を使用して下さい。
4902 メトリックス・ファイル'%s'をオープンできません。ファイルのパーミッションを確認して下さい。
4903
メトリックス・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さい。
4904
メトリックス・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さい。
4905
4906
データベース・ファイル '%s'を作成できません。
データベース・ファイル '%s'をオープンできません。ファイルのパーミッションを確認して下さい。
データベース・ファイル '%s'を読み込むことができません。ファイルのパーミッションを確認して下
4907
さい。
© 2003 Programming Research Limited / (株)東陽テクニカ
51
警告
番号
メッセージ
データベース・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さ
い。
4909 ソースファイル名'%s'が正しくありません。
4910 ログ・ファイル '%s'が開けません。イルのパーミッションを確認して下さい。
4911 ログ・ファイル'%s'への書き込みができません。ファイルのパーミッションを確認して下さい。
4908
© 2003 Programming Research Limited / (株)東陽テクニカ
52