リリースノート QA C PC 版 Version 4.5. 4.5.3J 3J 2003/10/10 Version1.04 ©2003 Programming Research Ltd / (株)東陽テクニカ 目次 1. はじめに ..................................................................................................3 2. QA C4.5.3J CDCD-ROM の内容...................................................................3 内容 3. 最小システム 最小システム構成 システム構成の 構成の推奨値.......................................................................4 推奨値 4. QA C PC 版のインストール .......................................................................4 5. ライセンスの ライセンスのインストール ...........................................................................5 5.1. 5.2. 5.3. 5.4. 6. 解析の 解析の改良点と 改良点と新機能.............................................................................6 新機能 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. 7. ‘LM-HostID’ の取得 (ライセンス・ファイル取得の手続き) ............................... 5 ネットワーク・ライセンス・サーバの起動......................................................... 5 ネットワーク・ライセンス・サーバに対するクライアントとしての操作 .......... 5 ライセンスのレジストリ・キー........................................................................... 5 MISRA 対応 ......................................................................................................... 6 解釈(パーシング) ............................................................................................ 6 プリプロセッサ.................................................................................................... 7 レイアウト........................................................................................................... 7 宣言/定義........................................................................................................... 7 リテラル .............................................................................................................. 9 変換 ..................................................................................................................... 9 文 ....................................................................................................................... 10 式 ....................................................................................................................... 11 制御文................................................................................................................ 12 データフロー ..................................................................................................... 12 メトリックス ..................................................................................................... 12 設定 ................................................................................................................... 12 インタフェースの インタフェースの改良点と 改良点と新機能 .............................................................13 7.1. 7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8. 7.9. 7.10. データベース ..................................................................................................... 13 使い勝手の向上.................................................................................................. 13 プロジェクト・パスの自動修正......................................................................... 14 解析後の処理の設定 .......................................................................................... 14 パーソナリティと設定....................................................................................... 14 メトリックス・ブラウザ ................................................................................... 15 注釈付きソースの表示....................................................................................... 15 レポート ............................................................................................................ 15 メッセージ・システム....................................................................................... 16 ヘルプ・システム .............................................................................................. 16 8. その他 その他の改良点と 改良点と新機能........................................................................17 新機能 9. 既知の 既知の問題............................................................................................18 問題 10. FAQ 集 .................................................................................................19 ©2003 Programming Research Ltd / (株)東陽テクニカ 1 11. 株式会社東陽テクニカ 株式会社東陽テクニカへのお テクニカへのお問合 へのお問合せ 問合せ.......................................................20 10. Programming Research Limited へのお問合 問合せ せ ..........................................20 へのお問合 11. 保証の 保証の免責............................................................................................20 免責 12. 著作権について 著作権について .....................................................................................21 13. 商標 ......................................................................................................21 付録 A. 追加された 追加されたメッセージ されたメッセージ ......................................................................22 付録 B. 変更された 変更されたメッセージ されたメッセージ ......................................................................23 付録 C. 削除された 削除されたメッセージ されたメッセージ ......................................................................35 付録 D. ライセンスの ライセンスのインストール及 インストール及び設定 ...................................................37 付録 D.1. FLEXlm のインストール .............................................................................. 37 付録 D.2. ネットワーク・ライセンス・サーバの起動 .................................................... 37 付録 D.3. ネットワーク・ライセンス・サーバに対するクライアントの設定................................................... 38 ©2003 Programming Research Ltd / (株)東陽テクニカ 2 1. はじめに 本書では、Windows 98, Me, NT, 2000, XP 用の QA C ソースコード・アナライザ PC 版の 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. QA C PC 版 4.5.3J のリリースノート 13. \QAC-4.5.3J\Docs\ QAC-4.5.3J-PC-ReleaseNotes.pdf \QAC-4.5.3J\Docs\ QAC-4.5.3J-PC-UsersGuide.pdf \QAC-4.5.3J\Docs\ QAC-4.5.3J-UNIX-ReleaseNotes.pdf \QAC-4.5.3J\Docs\ QAC-4.5.3J-UNIX-UsersGuide.pdf \QAC-4.5.3J\UNIX\QAC_4.5.3J_HP.tar.gz 14. \QAC-4.5.3J\UNIX\QAC_4.5.3J_Sol.tar.gz 15. \QAC-4.5.3J\PC\setup.exe その他 16. \toyo_util\UNIX\toyo_util_for_UNIX.tar QA C HP 版 4.5.3J インストール用ファイ ル QA C Solaris 版 4.5.3J インストール用ファ イル QA C PC 版 4.5.3J インストール用ファイ ル UNIX 版コマンド解析用ツール (*2) 17. \toyo_util\PC\toyo_util_for_PC.zip PC 用コマンド解析用ツール 10. 11. 12. QA C PC 版 4.5.3J のユーザーズガイド QA C UNIX 版 4.5.3J のリリースノート QA C UNIX 版 4.5.3J のユーザーズガイド *1) license_ap.doc は Word 形式のファイルです。 *2) 15 項の UNIX 版 toyo_util は、HP-UX 版 QA C および Solaris 版 QA C の tar ファイル(12 および 13 項)にも同梱されています。詳細は、QA C UNIX 版「リリースノート」をご参照ください。 ©2003 Programming Research Ltd / (株)東陽テクニカ 3 3. 最小システム 最小システム構成 システム構成の 構成の推奨値 QA C 4.5.3J が必要とする最小システム構成は、以下の通りです。 • • • • • ネイティブな Win32 環境 画面の解像度: 800 × 600 ピクセル 以上 Pentium®プロセッサ 以上 システムメモリ: 128 M バイト 以上 ディスク容量: 40 M バイト 以上 (デフォルトの Full インストール時) 注)解析時には、解析結果を保存するための領域が必要になります。十分な空き領域のあ る環境でご使用下さい。 4. QA C PC 版のインストール QA C PC 版をコンピュータにインストールする手順は以下の通りです。 1. QA C PC 版の CD-ROM を装着します。 2. サブ・ディレクトリ\QAC-4.5.3J\PC にある setup.exe を実行します。 3. 表示された手順と、以下に記す画面上の選択に従って下さい。 セットアップ・オプションには、Full と Custom の 2 通りがあります。Full をお勧めします。Custom の場合には、どのコンポーネントをインストールするかを選択することができます。 QA C PC 版のセットアップを 2 回以上行った場合、アンインストールは、直前のインストール時に 選択されたコンポーネントに対してのみ行われます。例えば、最初のセットアップ時にヘルプ・ファ イルをインストールせず、次にヘルプ・ファイルのみをインストールした場合は、QA C PC 版のアン インストールを行うとヘルプ・ファイルのみがアンインストールされます。 アンインストールは、「コントロールパネル」->「アプリケーションの追加と削除」から行ってください。 ©2003 Programming Research Ltd / (株)東陽テクニカ 4 5. ライセンスの ライセンスのインストール 以下に、ネットワーク・ライセンスのインストールに関する手順を記述します。 5.1. ‘LM‘LM-HostID’ の取得 (ライセンス・ ライセンス・ファイル取得 ファイル取得の 取得の手続き 手続き) QA C の CD の\FLEXlm\FLEXlm_for_PC.zip を解凍したフォルダ内にある“lmutil lmhostid”コ マンドを実行すると、以下のように LM-HostID が出力されます。 \FLEXlm\FLEXlm_for_PC.zip の解凍および FLEXlm のインストールについては、「付録 Dライ センスのインストール及び設定」をご参照ください。 実行例: C:\Program Files\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++ライセンス申請書」と同等の情報をss_support@toyo.co.jp に e-mail でお 送りいただいても、ライセンス・ファイルを発行いたします。 5.2. ネットワーク ネットワーク・ ・ライセンス・ ライセンス・サーバの サーバの起動 サーバの LM-HostID に合った有効なライセンス・ファイルが必要となります。LM-HostID の取得 については、上述の手順をご参照下さい。 QA C の CD の\FLEXlm\FLEXlm_for_PC.zip をサーバ上のディレクトリにコピーし、解凍、インス トールして下さい。ライセンス・サーバは、lmtools.exe によって制御されます。操作手順は、「付録 Dライセンスのインストール及び設定」をご参照下さい。 5.3. ネットワーク ネットワーク・ ・ライセンス・ ライセンス・サーバに サーバに対するクライアント するクライアントとして クライアントとしての としての操作 QA C を起動するとプロンプトが表示されますので、ライセンス・サーバ名を@<サーバ名>の形式 で指定して下さい。以降の QA C の実行に備えて、ライセンス・サーバ名がレジストリに記録されま す。操作手順は、「付録 Dライセンスのインストール及び設定」をご参照下さい。 5.4. ライセンスの ライセンスのレジストリ・ レジストリ・キー QA C の実行時、ライセンス・ファイル名またはサーバ名は、各クライアント・マシンの以下のレジス トリ・キーに保存されています。 HKEY_LOCAL_MACHINE/SOFTWARE/FLEXlm Licence Manager/PRFLEXD_LICENSE_FILE このキーは、アプリケーションがライセンスを取得する際に、path 変数のようにライセンス・ファイル 名やサーバ名を検索するのに使用されます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 5 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 が ビットフィールド宣言に使用された場合に出力されます。(既存のメッセージ 635 は非 int ビットフィールド宣言に使用に対して出力されます。) 6.2. 解釈( 解釈(パーシング) パーシング) ! CR662: 入れ子になった名前のない構造体のメンバを指すことを許す言語拡張をサポート しました。新しいメッセージ 662 が出力されます。 ! CR785: -d で設定したマクロでセミコロンを定義した際に発生していたパーシング・エラー を修正しました。 ! CR800: ‘for’ループの条件式に増分/減分演算子がある場合に発生していたパーシン グ・エラーを修正しました。 ! CR807: キャストを含む式や浮動小数点式で初期化された static オブジェクトに対して、 メッセージ 685 が誤って出力されていたのを修正しました。 ! CR821: 書式指定子 %% に対して、メッセージ 160(%s 番目の変換指定子はサポートされて いません。)が誤って出力されていたのを修正しました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 6 ! CR853: セミコロン(‘;’)を含む文字列リテラルが改行文字(‘\’)の後に続く合法的な記述 に対し、メッセージ 259(文字列リテラルに改行文字(new-line character)が含まれていま す。)が誤って出力されていたのを修正しました。 ! CR863: Microsoft や Hiware コンパイラに含まれるインライン・アセンブラ・コードに対応す るために、新たに幾つかの形式の構文をサポートできるようになりました。 ! CR884: “munch” の能力を増強し、‘@’ トークンを直接扱うことができる ‘_munch_at’ を備 えました。 ! CR885: ビットマップ・データ型(言語拡張)の識別子を定義するのに使用される ‘.’ 演算 子が、ファイル有効範囲(スコープ)内で解釈できるようになりました。 6.3. プリプロセッサ ! CR748: #include “filename” 文に対して、ソースファイルが置かれたディレクトリが最初に検 索されなかった点を修正しました。 ! CR796: 波括弧(‘{’)が同じ行にない場合にも、‘_munch_paren’ が正しく動作するように修 正しました。 ! CR816: 複雑なマクロに対してメッセージ 3411(マクロ定義の中に、対になっていない角括 弧または括弧があります。)が出力される問題を修正しました。 ! CR864: “##” 演算子の誤用が検出された後の、復帰能力を向上しました。 ! CR870: マクロ定義内の特定のキーワードや字句の使用に関するメッセージ群を再編成し、 一部は MISRA ルールに対応させました。 3413 3414 3428 3412 3439 このマクロ定義は typedef に置き換えることができるはずです。 マクロ定義に記憶域修飾子 ‘%s’ が含まれています。 マクロ定義に型修飾子 ‘%s’ が含まれています。 マクロ定義に、‘{‘, ‘}’, ‘;’ またはキーワードが含まれています。 マクロはキーワードの再定義に使用してはいけません。 6.4. レイアウト ! CR886: #define で除去された字句に対する桁位置の補正が正しくないためにメッセージ 2200(この行の段付けは上の行より左に寄っています。)が出力される問題を修正しました。 6.5. 宣言/ 宣言/定義 ! CR758: .met ファイル内の<DEFINE>レコードが、連続する暗黙的な関数宣言に対して正 しく生成されない問題を修正しました。 ! CR760: メッセージ 3203(変数 ‘%s’ を設定しましたが、その後使用していません。)がポ インタに対して正しく出力されない問題を修正しました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 7 ! 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 が出 力されます。 ♦ 関数が ‘void’ 型以外の型を返す場合: ‘return;’ を検出するとメッセージ 1325(C++と の互換性に関する警告)とメッセージ 745 が出力され、return 文が存在しないとメッ セージ 744 が出力されます。 ♦ 関数内に ‘return;’ と ‘return 式;’ が混在している場合、更にメッセージ 754 が出力 されます。 ♦ 関数内に複数個の return 文が含まれている場合、メッセージ 2006 が出力されます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 8 ! 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(符号付き データに対するビット単位の演算は未定義の結果になります。)の出力を抑止するように改 良しました。 ! CR725: メッセージ 3892(明示的なキャストは他の型への暗黙的なキャストです。)が、void * 型にキャストされた式への代入や比較に対しては出力されなくなりました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 9 ! 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’ が変更され、アクセスされています。評価の順番は未定義です。)が、配列型の実引数が関係する式の一部で正しく出力され ない問題を修正しました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 10 ! CR747: メッセージ 3217(ローカル変数のアドレスがそのメモリが開放された後も維持され る静的変数に代入されています。)は、広域変数から関数の static 変数への代入時には 出力されなくなりました。 ! 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(関係演算子の両側のオペランドが論理式です。)が追加さ れました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 11 6.10. 制御文 ! CR650: ‘for’ ループの増分式で使用されている変数がループ本体の中で初期化されて いる場合に、メッセージ 3321(変数 ‘%s’ は、この時点では設定されていないかもしれま せん。)が誤って出力されてしまう問題を修正しました。 ! CR724: ループ制御変数に対するチェック(2460 番台のメッセージ)が、構造体の要素に 対しては出力されなくなりました。 ! CR815: switch 文の case ラベルの後に空のブロックがある場合、そのブロックの後の、次 の case の前にある行で、メッセージ 3201(この文には到達できません。)が誤って出力され てしまう問題を修正しました。 ! 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 の値が境界値を超えています。)が出力されます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 12 7. インタフェースの インタフェースの改良点と 改良点と新機能 CR で始まる番号は、PRL 社の管理番号です。 7.1. データベース CR810: BDE(Borland Database Engine)データベースが廃止され、メモリ内のデータベース・ エントリに置き換えられました。対応する設定エントリの中で、冗長となったもの(データベース・ パス、データベースのロードと管理)は廃止されました。各種のブラウザで限定されたファイル 選択を行うために、新しい設定ウィンドウでは、プロジェクト内の使用可能な解析済みファイル をサブセットとして選択できるようになりました。 7.2. 使い勝手の 勝手の向上 ! CR899: 定義の後に外部宣言があると、ソースファイルへのジャンプに失敗する問題を解 決しました。(QA C 4.5.1 で対応) ! CR982: メッセージ・パーソナリティ内でのユーザ・メッセージの表示において、再定義され たメッセージ・グループが新しいレベルに誤って割り当てられ、ユーザ・メッセージの複数の 実体が表示されない問題を解決しました。(QA C 4.5.1 で対応) ! CR402: ファイルとフォルダに対して、ドラッグ・アンド・ドロップ動作ができるようになりました。 ! CR767: 解析出力ファイルが、メニューからの選択によって削除できるようになりました。 ! CR801: より大きなファイル・エントリ・リストが、以前のようなファイル・リスト作成に多くの時 間がかかることなく、表示されるようになりました。 ! CR802: 自動生成機能が拡張され、新規プロジェクトだけでなく、プロジェクト内のサブ・ フォルダに対しても操作できるようになりました。 ! CR477, CR833: 解析の一時停止で、解析再開まで解析プロセスを正確に停止させること ができるようになりました。 ! CR795: 長いファイル名やパス名に対して、解析プロセスの開始(解析と注釈付きソースの 生成)前に警告を発して解析を中止するようになりました。 ! CR803: 或るフォルダを解析すると、以下の全てのサブ・フォルダも解析されるようになりま した。 ©2003 Programming Research Ltd / (株)東陽テクニカ 13 7.3. プロジェクト・ パスの の自動修正 プロジェクト・パス ! CR844: プロジェクト・ファイルを開くと、ファイルやパスが存在しない場合にはユーティリ ティが動作して、半自動的にパスを修正するようになりました。存在しないパスやファイルが 最初に検出されると、ダイアログが表示されます。エントリが修正された後に、「全てに適 用」を選択すると、以降の全ての存在しないファイルやパスに対して同じ修正が行われま す。なお、「適用」、「全てに適用」、「無視」、「全て無視」のどれかを選択することができま す。 7.4. 解析後の 解析後の処理の 処理の設定 ! CR844: 解析後の処理の設定が、メッセージ・パーソナリティ内に常駐するようになりました。 「拡張設定」タブ内には、(設定済みならば)現在の完全な解析後の処理用のコマンドラ インが表示され、解析後の処理を設定するフォームを入力するためのボタンが備えられて います。 7.5. パーソナリティと パーソナリティと設定 ! CR844: 「パーソナリティ・パス」という概念が廃止され、パーソナリティの表現と保存がフル・ パスとファイル名で行われるようになりました。この改良によって、パーソナリティの共有が 容易になり、特に異なるパーソナリティを別個の位置に置くことができるようになりました。例 えば、コンパイラ・パーソナリティを共通の位置に、アナライザ・パーソナリティを別の位置に 置くような形態が挙げられます。 ! CR823: 設定エントリの幾つかを、qac.cfg に依存しないようにしました。qac.cfg から除去さ れたものには、‘#level’ セクション(メッセージ・レベルの名称を入力するのに使用)と ‘#cyclomatic’, ‘#paths’, ‘#general’, ‘#comments’ セクション(次項の新しいメトリックス 境界値の設定を参照)が挙げられます。qac.cfg の他のセクションの中で特に将来のバー ジ ョ ン で の 廃 止 や 置 き 換 え が 検 討 さ れ て い る も の と し て は 、 ‘#format’, ‘#options’, ‘#messages’ が挙げられます。 ! CR451: メトリックス境界値の設定が qac.cfg からアナライザ・パーソナリティに移され、完全 にユーザ側で定義できるようになりました。以前 qac.cfg 内にあった固定された境界値は 残っておらず、関連するメッセージはメッセージ・システムから除去されました。 ! CR841: メッセージ・パーソナリティでのユーザ・メッセージ・ファイルの設定が単純化され、 ユーザ側で単にファイルを選択するだけになりました。指定されたテキスト・エディタを用い て、このファイルを編集することもできます。内部の設定形式では、以前と同様に -usrname と -usrpath として残っています。 ! CR823: ユーザ・メッセージ・ファイルのパスを指定(-usrpath エントリが必要)すると、この -usrpath の位置が検索されて、この中にある HTML 形式のメッセージ説明用のファイルが、 デフォルトの位置にあるものよりも優先的に使用されます。このようにして、ユーザ固有の メッセージの説明(例えばプログラミング標準への準拠に関するものを備える等)を、簡単 に設定したり注釈付きソースコードにリンクしたりすることができます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 14 ! CR841: 連続したメッセージをまとめてオンまたはオフに設定する場合、メッセージ・パーソ ナリティには各メッセージ番号が別個に保存されるのではなく、xxxx-yyyy という形式で保 存されるようになりました。 ! CR842: 抑止されたメッセージを表示するための -hiddenwarnings オプションが、メッセー ジ・パーソナリティの「表示」タブ内で設定できるようになりました。 ! CR860: コンパイラ・パーソナリティで、型のサイズとアライメントの設定部の表示が視覚的 に確認できるように統合され、設定できるサイズ、現在の設定、各々の型が取り得る範囲が 表示されます。 ! CR824: アナライザ・パーソナリティで、あらゆるメトリックスについて境界値を設定すること ができるようになりました。設定時の構文でメッセージ番号を指定しなかった場合には、メッ セージ 4700 がデフォルトとして使用され、メトリックス名と実際の値がエラー・ファイルに送 られます。 ! 「構成」メニューの「オプション」ウィンドウで、新規または自動作成されるプロジェクトに適用 されるデフォルトのパーソナリティを、自由に定義できるようになりました。 7.6. メトリックス・ メトリックス・ブラウザ ! CR805: ソーティングのアルゴリズムが改善され、巨大なメトリックス・データの扱いが高速化 されました。 7.7. 注釈付 注釈付き きソースの ソースの表示 ! CR811: HTML リンクの書式を、主要なブラウザとの互換性を持った 形式に変更しました。 ! CR823: メッセージ・ファイル内の #levelname エントリを使った名称でメッセージ・レベルを 割り当てることができるようになり、ユーザ・メッセージ・ファイルの内容で上書きすることもで きるようになりました。注釈付きソースでは、常にメッセージ・レベル番号に変換されて出力 されます。 ! CR878: メッセージが、各メッセージ・レベルの定義内容ではなく、警告レベル番号と共に 表示されるようになりました。 7.8. レポート ! CR822: 「レポート」メニューの選択肢から「メトリックス・サマリ」と「未使用変数」が外されまし た。 ! CR822: 「近似名の解析」が、1 回解析を行った全てのファイルに対して動作できるようにな りました。 ! CR488: 「未使用外部識別子」が、或る識別子を誤って除外して出力されていたのを修正 し、一方で main, winmain, dllmain の各エントリ・ポイントはリストから除外されました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 15 ! CR822: 「識別子の宣言」のレイアウトが、項目間を空白で埋めることによって、整然と表示 されるようになりました。 ! CR450: ユーザが定義可能なカスタム・レポートの作成と編集が、「レポート」メニューの「カ スタム・レポート」から利用できるようになりました。 7.9. メッセージ・ メッセージ・システム ! CR835: メッセージ 342(K&R コンパイラは ISO 文字列連結演算子 ‘##’ をサポートしてい ません。)のテキストが存在しないという問題を修正しました。 ! メッセージで使われる数々の用語を、明快さを増して、技術的な専門用語を極力減らす方 針に基づいて、変更しました。 7.10. ヘルプ・ ヘルプ・システム ! 多くの解析メッセージが出力される様子を説明するためのプロジェクト例を含む幾つかの プロジェクトを、製品に含めました。 ! ヘルプ・システムが拡張され、技術的な用語や C 言語としての見地に関する情報への参 照を含むセクションを設けました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 16 8. その他 その他の改良点と 改良点と新機能 CR で始まる番号は、PRL 社の管理番号です。 ! CR1023 絶対パスで指定されたインクルード・ファイルの検索に失敗する問題を修正しまし た。 ! CR1071: enum への int でキャストした代入がある場合に、構文解析に失敗していた問題を 修正しました。 ! CR1170: -forceinclude オプションで指定された追加インクルード・ファイルに対して、 #include パス指定に関するメッセージが出力されてしまう問題を修正しました。 ! CR1172: 前処理指令内の式の評価が誤っていた問題を修正しました。 ! CR1174: インライン・アセンブラ文 “asm()” が或る状況下で構文解析の誤りを引き起こす 問題を修正しました。 ! CR1177: enum を返す関数へのポインタを指す場合に構文解析が異常終了してしまう問題 を修正しました。 ! CR1182. #include 文で指定されるパス名とファイル名の長さに対する 76 文字という制限が なくなりました。 ! 以前のバージョンで使用されていた HASP キーに代って、新しく FLEXlm ライセンス・ソフト ウェアに置き換えられました。 ! CR.1126: 解析ウィンドウの下部に表示される解析失敗を示す付加的な情報に、ユーザが 生成したメッセージは含まれないようになりました。 ! CR.1164: 非常に長いパス名やファイル名が使用されている環境下で、プロセスがソースの パス名やファイル名の長さに影響を受けることがなくなりました。 ! CR.1193: ソースファイルが解析キューに既に存在している場合には、そのファイルの解析 指令を出さないようになりました。 ! CR.1286: 解析出力生成の或る状況の実行中には、解析後の処理を行わないようになりま した。 ©2003 Programming Research Ltd / (株)東陽テクニカ 17 9. 既知の 既知の問題 NO 1 OS 問題内容 対策 プロトタイプ宣言されている行より前で、プロ 不具合として PRL に報告いたしましたが、 トタイプ宣言されている関数を呼び出すと、 残念ながら現時点では回避することがで 失敗:未定義の反応(プリプロセス中断)と きません。 なります。 例: 関数 boo は、5 行目で宣言されています 全プラット が、3 行目で関数 foo が関数 boo を呼び出 フォーム しています。 1:void foo(void) 2:{ 3: boo(); 4:} 5:int boo(void); フォルダ名やパス名に、0x8ea1 ~ 0x8edf までの 63 種類の文字を使用すると QA C は解析を失敗します。 2 3 4 全プラット 具体例: フォーム 治爾璽痔磁示而耳自蒔辞汐鹿式識 鴫竺軸宍雫七叱執失嫉室悉湿漆疾質 実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮 社紗者謝車遮蛇邪借勺尺杓灼爵酌釈 v_callcheck をコマンドラインから起動すると Windows v_callcheck が正常に動作しません。 98 Windows 警告 808 が表示されません。 98 宣言のクロスチェック表示で HTML ファイ ルが表示できない場合があります。 Q5 Windows NT ©2003 Programming Research Ltd / (株)東陽テクニカ 不具合として PRL に報告いたしましたが、 残念ながら現時点では回避することがで きません。 恐れ入りますが、0x8ea1 ~ 0x8edf までの 63 種類の文字をフォルダやファイル名に 使用しないで下さい。 不具合として PRL に報告いたしましたが、 残念ながら現時点では回避することがで きません。 不具合として PRL に報告いたしましたが、 残念ながら現時点では回避することがで きません。 QA C が宣言のクロスチェックのレポートを 作成する際、先頭にあるべき <HTML><HTML>のタグを作成しないこと が原因です。 HTML として表示したい場合は、IE5.0 以 上を使用するか、クロスチェックレポートを 一度テキストファイルに保存して、ファイル の最初に<HTML>、ファイルの最後に </HTML>を追加してください。 18 10. FAQ 集 NO OS 質問 旧バージョンの解析オプション ファイルを使用して解析を実施し ましたが、エラーになりました。 対策 解析オプションの指定で、値の設定を必要とするオ プション(+,-以外の設定が必要なオプション)では、 オプションと設定値の間にスペースを入れることが 全プラット 必須になりました。 1 フォーム QA C4.5.x より以前のバージョンで使用していた QA C 解析用オプション設定ファイルをご使用の ユーザは、オプションと設定値の間に空白を挿入し てください。 ライセンスが取得できないため、 ライセンスサーバとクライアントのマシンタイムが極 QA C が使用できません。 端に異なる(約一日以上)場合、ライセンスを取得で 全プラット 2 きなくなります。 フォーム ライセンスサーバとクライアントマシンのマシンタイム を合わせてください。 QA C の旧バージョンと同じメッ QA C4.5.3J から、メッセージのグループが変わりま セージグループを使用して解析し した。 たい。 QA C4.x のバージョンと同じメッセージグループを 使用したい場合は、qac.usr.orig を、ユーザメッセー ジファイルとして設定してください。 全プラット 3 qac.usr.orig は、QA C4.5.3J をインストールしたフォ フォーム ルダのbinフォルダにあります。 ユーザメッセージファイルの設定方法は、QA C ユーザーズガイド(\QAC-4.5.3J\Docs\QAC4.5.3J-PC-UsersGuide.pdf)の P162-usrpath 及びusrfile をご参照ください。 ©2003 Programming Research Ltd / (株)東陽テクニカ 19 11. 株式会社東陽テクニカ 株式会社東陽テクニカへのお テクニカへのお問合 へのお問合せ 問合せ 株式会社東陽テクニカは、Programming Research 社の日本国内における総代理店です。 日本国内でのお問合せについては、株式会社東陽テクニカへお願いします。 株式会社 東陽テクニカ ソフトウェア・ソリューション 郵便番号 住所 電話 FAX E-Mail(営業窓口) 〒103-8284 東京都中央区八重洲 1-1-6 03-3245-1248 03-3246-0645 ss_sales@toyo.co.jp E-Mail(サポート窓口) ss_support@toyo.co.jp 10. Programming Research Limited へのお問合 へのお問合せ 問合せ 以下に示す Programming Research Ltd.の本社に直接お問合せいただくこともできます。 電話 FAX e-mail +44 (0) 1 932 888 080 +44 (0) 1 932 888 081 support@programmingresearch.com 11. 保証の 保証の免責 和文: 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 Ltd / (株)東陽テクニカ 20 12. 著作権について 著作権について 和文: 本書には著作権があり、全体または一部を問わず、どのような方法(電子的またはその他)によっ ても、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. 13. 商標 QA C,QA C++, QA Fortran, QA Manager は、Programming Research Ltd.の商標です。 MISRA は、MISRA Consortium を代表して運営する The Motor Industry Research Association の登録商 標です。PR:QA と PR:QA ロゴは、Programming Research Ltd.の登録商標です。Microsoft と Windows は、Microsoft Corporation の登録商標です。UNIX は、UNIX System Laboratories, Inc. の登録商標です。 本書内に示した他の全ての製品やサービスには、それらを販売する企業で選定された商標、サー ビスマーク、製品名が含まれます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 21 付録A. 付録A. 警告 番号 40 41 42 246 634 660 662 842 1274 1275 1276 1330 1331 1332 1333 2102 2103 2104 2105 2106 2107 2110 2111 2112 2113 2114 2115 2116 2117 2118 3122 3123 3131 3141 3219 3429 3439 3625 3683 4113 4131 4700 追加された 追加されたメッセージ されたメッセージ メッセージ size_t の定義が設定された型と異なります。 ptrdiff_t の定義が設定された型と異なります。 wchar_t の定義が設定された型と異なります。 2 進数定数は一部のコンパイラでのみ使用できます。 ビットフィールドは、unsigned または signed として明示的に宣言するべきです。 構造体/共有体のメンバーに名前がありません。 名前無しの構造体の要素にアクセスするために、拡張された構文を使用しています。 マクロは、ブロック内で#define したり#undef したりしないで下さい。 接尾辞が付いていない浮動小数点型リテラルが、他のオペランドの暗黙的なキャストを引き起こ します。 接尾辞が付いた浮動小数点型リテラルが、他のオペランドの暗黙的なキャストを引き起こしま す。 整数型リテラルが、代入の前に暗黙的に浮動小数点型へキャストされます。 関数定義で使用されている仮引数識別子が、関数プロトタイプのものと異なります。 実引数の型か個数が、この関数の前の使用時と異なります。 実引数の型か個数が、この後で見つかる関数プロトタイプと異なります。 実引数の型か個数が、この後で見つかる関数定義と異なります。 汎整数拡張 : 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 に拡張されます。 デフォルトの引数拡張 : 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'が直接使用されています。これは避けるべきです。 ビットフィールドの大きさの指定に %s が直接使用されています。 空の文は、それ自身だけを 1 行に置くべきです。 static 関数 '%s()'は、この翻訳単位内で使用されていません。 関数型マクロよりも関数を使用すべきです。 マクロはキーワードの再定義に使用してはいけません。 char 型の宣言には、明示的に unsigned または signed を付けるべきです。 配列の終端の 1 つ先の要素の位置を指しています。 関係演算子の両側のオペランドが論理式です。 符号付きのオペランドを左シフトしています。 メトリックス %s の値が閾値を超えています。 ©2003 Programming Research Ltd / (株)東陽テクニカ 22 付録B. 付録B. メッセー ジ番号 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 184 185 186 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 206 207 208 241 変更された 変更されたメッセージ されたメッセージ メッセージ [U] %s 番目の変換指定子はサポートされていません。 [U] %s 番目の変換指定子'I'または'd'に未知のフラグが使われています。 [U] %s 番目の変換指定子'o'に未知のフラグが使われています。 [U] %s 番目の変換指定子'u'に未知のフラグが使われています。 [U] %s 番目の変換指定子'x'に未知のフラグが使われています。 [U] %s 番目の変換指定子'X'に未知のフラグが使われています。 [U] %s 番目の変換指定子'f'に未知のフラグが使われています。 [U] %s 番目の変換指定子'e'に未知のフラグが使われています。 [U] %s 番目の変換指定子'E'に未知のフラグが使われています。 [U] %s 番目の変換指定子'g'に未知のフラグが使われています。 [U] %s 番目の変換指定子'G'に未知のフラグが使われています。 [U] %s 番目の変換指定子'c'に未知のフラグが使われています。 [U] %s 番目の変換指定子'%%'に未知のフラグが使われています。 [U] %s 番目の変換指定子's'に未知のフラグが使われています。 [U] %s 番目の変換指定子'n'に未知のフラグが使われています。 [U] %s 番目の変換指定子'p'に未知のフラグが使われています。 [U] %s 番目の変換指定子は未知の仕様です。 [U] フィールド幅が 509 文字を超えました。 [U] 精度幅が 509 文字を超えました。 [U] 変換指定子 '%s' と実引数の型が合っていません。 [U] %s 番目の変換指定子を満足させるための実引数が足りません。 [U] 変換指定子で指定した数より多くの実引数で呼び出されています。 [U] 少なくとも一つの実引数を使って呼び出さなければいけません。 [U] %s 番目の変換指定子はサポートされていません。 [U] %s 番目の変換指定子'd/I/n'に未知のフラグが使われています。 [U] %s 番目の変換指定子'o'に未知のフラグが使われています。 [U] %s 番目の変換指定子'u'に未知のフラグが使われています。 [U] %s 番目の変換指定子'x/X'に未知のフラグが使われています。 [U] %s 番目の変換指定子'e/E/f/g/G'に未知のフラグが使われています。 [U] %s 番目の変換指定子's'に未知のフラグが使われています。 [U] %s 番目の変換指定子'p'に未知のフラグが使われています。 [U] %s 番目の変換指定子'%%'に未知のフラグが使われています。 [U] %s 番目の変換指定子'['に未知のフラグが使われています。 [U] %s 番目の変換指定子'c'に未知のフラグが使われています。 [U] %s 番目の変換指定子は未知の仕様です。 [U] '[]'変換仕様の中の'-'文字は処理系に依存して定義されます。 [U] '[]'内の'-'の前にある文字の値が次に続く文字より大きいです。 [U] フィールド幅が 509 文字を超えました。 [U] 実引数の型が%s 番目の変換指定子と一致していません。 [U] 'scanf' にはデータを格納すべきオブジェクトのアドレスが必要です。 [U] scanset(走査文字集合:[]に囲われた文字のセット)に同じ文字が1つ以上現れています。 このファイルには Ctrl-Z が存在します。- これは PC から転送されたコードですか? ©2003 Programming Research Ltd / (株)東陽テクニカ 23 メッセー ジ番号 274 280 283 307 308 308 340 341 343 344 345 346 347 348 349 350 352 486 502 547 592 625 635 650 652 661 664 664 687 688 689 735 744 745 747 754 769 770 メッセージ 定数の値が対象の型で表現できる範囲を外れています。 [L] 結果は ISO で定義されている符号付きの値の範囲を超えています。 [L] 浮動小数点定数が、表現可能な範囲を超えています。 [U] このキャストをポインタに対して行うことは定義されていません。 不完全型に対して、ポインタを含む移植性のないキャストを行っています。 不完全型に対して、ポインタを含む移植性のないキャストを行っています。 多くの K&R コンパイラは '#error'を受け付けません。 K&R コンパイラは ISO 文字列生成演算子 '#'をサポートしていません。 文字列の連結は ISO の機能です。K&R コンパイラでは機能しません。 K&R コンパイラは関数プロトタイプをサポートしていません。 旧式の K&R コンパイラは'void'を識別子として扱うでしょう。 %s' は ISO の予約語ですが K&R コンパイラでは認識されません。 K&R コンパイラは'extern'変数の初期化を許しません。 旧式の K&R コンパイラはビットフィールドをサポートしません。 単項演算子 '+' は ISO の機能です。これは全ての K&R コンパイラでサポートされているわけで はありません。 K&R コンパイラの中には'enum'をサポートしていないものや、正しくサポートをしないものがありま す。 #elif' は全ての K&R コンパイラがサポートしているわけではありません。 [C] 整数式と適合するポインタのみがポインタから減算することができます。 符号付きデータに対する右シフトは、算術型と論理型の両方の可能性があります。 [U] このタグ '%s' の宣言は、前の宣言と矛盾しています。 負の'case'ラベルは全てのコンパイラに対して移植性があるわけではありません。 [U] '%s'は内部リンケージと外部リンケージの両方で宣言されています。振る舞いは未定義です。 [U] int 以外の型を持つビットフィールドの振る舞いは未定義です。 [C] 関数の仮引数に違法な記憶クラス指定子が使われています。 [U] 識別子は関数プロトタイプの中の仮引数全てに与えるか全く与えないかどちらかであるべきで す。 [U] '%s()'は、ローカルに宣言されたときに記憶クラス指定子'static'を伴っていない可能性があり ます。 関数の仮引数に'(void)'型は使用できません。おそらく、仮引数リストを'(void)'にする意図だった はずです。 関数の仮引数に'(void)'型は使用できません。おそらく、仮引数リストを'(void)'にする意図だった はずです。 結合された文字列を用いて配列が初期化されていて、初期化子の数が宣言されたサイズより小さ くなっています。 配列のサイズが、結合された文字列を含む初期化子の数によって決定されています。 初期化子が飛び越されるか、全く使用されていない可能性があります。 switch'文の中で関係演算子や論理演算子を使うと、通常はプログラミング・エラーとなります。 [U] ' %s()'は'void'型以外の型を返すと定義されていますが、'return'文がありません。 %s()'は、'void'型以外の型を返すと定義されていますが、'return;'が見つかりました。 [u] 'void'型の関数として定義された'%s()'内で、'return 式;'が見つかりました。 %s()'は、'return;'と'return 式;'の両方の文を持っています。 'break'文は'switch'文の中でのみ使用されるべきです。 continue 文は使用するべきではありません。 ©2003 Programming Research Ltd / (株)東陽テクニカ 24 メッセー ジ番号 776 777 778 779 813 814 815 816 818 819 820 830 845 855 857 858 859 869 874 899 906 918 1003 1004 1005 1006 1011 1018 1019 1023 1024 1025 1026 1100 1250 1251 1252 1253 1254 1255 1256 メッセージ [L] 外部識別子名が他の識別子名(例 '%s')と、最初の 6 文字で一致しています。 - プログラムは ISO 準拠ではありません。 [U] 外部識別子名が他の識別子名(例 '%s')と、指定された文字数の範囲内で異なっていません。 [L] 識別子名が他の識別子名(例 '%s')と、最初の 31 文字で一致しています。 - プログラムは ISO 準拠ではありません。 [U] 識別子名が他の識別子名(例 '%s')と、指定された文字数の範囲内で異なっていません。 [U] '#include <%s>'内での' " \\ または /*の使用は未定義の振る舞いを生じます。 [U] '#include "%s"'内での' '\\ または /*の使用は未定義の振る舞いを生じます。 [L] #include <…> の名前は ISO の制約違反です。 [L] #include "…" の名前は ISO の制約違反です。 [C] '%s'を見つけることができません。適切な検索パスが設定されていないのでしょう。 [C] '%s'を開くことができません。適切な検索パスが設定されていないのでしょう。 #include'にはヘッダ名が必要です。 [S] 前処理指令の後には空白類と改行のみを続けられます。前処理指令に対する余分なテキスト を追加するにはコメントを使用して下さい。 [C] オブジェクト型マクロ '%s'を関数型マクロとして再定義しています。 前処理の結果が、前処理指令の形式を持つトークンの並びの中に存在します。 [L] マクロ定義の数が 1024 を超えています。 - プログラムは ISO 準拠ではありません。 [L] マクロ仮引数の数が 31 を超えています。 - プログラムは ISO 準拠ではありません。 [L] マクロ呼び出しの実引数の数が 31 を超えています。 - プログラムは ISO 準拠ではありま せん。 #error'前処理指令: %s 解析が'#error'によって中止されました。 [U] 文字列リテラルとワイド文字列リテラルが隣接しています。 [C] '#'は前処理トークン内の区切子か'#define'内の演算子としてのみ使用できます。 [U] 基本ソース文字集合に無い文字が使われています。 ソースが複雑すぎます。この問題を東陽テクニカ(ss_support@toyo.co.jp)に連絡して下さい。 [S] '#%s'はインライン・アセンブラ用の言語拡張です。 [S] 対応する'#asm'前処理指令が無い '#endasm'が見つかりました。 [S] '#%s'前処理指令を探している途中で、ファイルの終端に到達してしまいました。 [S] このアセンブラ定数は無視されました。 [S] C++コメント '//' の使用は、C 言語としては拡張仕様です。 [S] 接尾語'LL'は、ISO C に対する拡張仕様です。 [S] '@アドレス'は、ISO C ではサポートされていません。 [C] 関数型に対する'__alignof__' は違法です。 [C] 不完全型に対する '__alignof__' は違法です。 [C] ビットフィールドに対する'__alignof__' は違法です。 [S] この '@ ワード' は無視されました。 ラベル '%s' は、typedef としても宣言されています. 接尾語が付いていない整数型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。 接尾語が整数型リテラルが、他のオペランドの暗黙的なキャストを引き起こします。 接尾語が付いた整数型リテラルが、暗黙的に他の型へキャストされます。 接尾語が付いていない整数型リテラルが、暗黙的に他の型へキャストされます。 リテラルの接尾語が、整数定数の結果の型と一致しません。 接尾語が付いていない整数型リテラルが、int 型ではありません。 接尾語が付いた整数型リテラルが、代入の前に暗黙的にキャストされます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 25 メッセー ジ番号 1257 1258 1259 1260 1261 1262 1264 1265 1267 1268 1269 1271 1273 1301 1303 1304 1306 1307 1309 1310 1312 1314 1315 1318 1319 1323 1325 1327 1328 1475 1476 2002 2003 2004 2006 2008 2010 2100 2101 2465 2469 2547 3002 メッセージ 接尾語が付いた整数型リテラルが、代入の前に暗黙的により小さな型へキャストされます。 接尾語が付いた整数型リテラルが、明示的に他の型へキャストされます。 接尾語が付いていない整数型リテラルが、明示的に他の型へキャストされます。 整数型リテラルが、暗黙的に浮動小数点型へキャストされます。 接尾語が付いた浮動小数点型リテラルが、暗黙的に他の型へキャストされます。 接尾語が付いていない浮動小数点型リテラルが、暗黙的に他の型へキャストされます。 接尾語が付いた浮動小数点型リテラルが、代入の前に暗黙的にキャストされます。 接尾語が付いていない浮動小数点型リテラルが、代入の前に暗黙的にキャストされます。 接尾語が付いた浮動小数点型リテラルが、明示的に他の型へキャストされます。 接尾語が付いていない浮動小数点型リテラルが、明示的に他の型へキャストされます。 浮動小数点型リテラルが、明示的に整数型へキャストされます。 int 型以外の式を使用しても、列挙定数の型は変更されません。 リテラル定数が、意図した型よりも大きすぎます。 一部の C++では '%s' は予約語です。 関数型の空の仮引数並びは C++では異なる意味を持ちます。 古いスタイルの関数定義'%s()' は C++への移植性がありません。 '%s'に対する複数の一時的定義があります。 - C では動作しますが、C++では動作しません。 名前無しの 構造体型と共用体型は C++への移行の際に移植上の問題を引き起こすかも知れま せん。 C++では、typedef '%s'は既に存在する 構造体タグ/共用体タグ/'enum'タグと衝突します。 '%s'は同じ構造体/共用体/'enum'に対してタグ並びに typedef として使われています。 この初期化されている配列は文字列初期化子の終端の'\0'を保持しません。 タグ'%s'は他の構造体/共用体の中で定義されました。 C++では、'static'を指定できるのはオブジェクトまたは関数だけです。 C++では、列挙型オブジェクトに対して += 等の複合型演算子を使用することはできません。 C++では、増分と減分演算子は列挙型付きのオブジェクトには適用できません。 列挙型定数の sizeof は、C++では sizeof(int)とは保証されていません。 '%s()'は、'void'型以外の型を返すと定義されていますが 'return;'を含んでいます。これは C++で は許されません。 C++では、マクロ__STDC__ の値や存在は何も保証されていません。 関数宣言の中で、タグ付けされた型が定義されています。 列挙型の値の取り得る範囲を考えると、このテストは常に真になります。 列挙型の値の取り得る範囲を考えると、このテストは常に偽になります。 この 'switch' 文には 'default' ラベルがありません。 空でない 'case' ラベルは明示的な 'break' 文で終わるべきです。 'if'-'else'-'if'文を完結させる 'else'文が存在しません。 関数'%s()' には複数の'return'文が存在します。 'case'ラベルまたは'default'ラベルの前に'switch'文本体のコードが存在します。 関数'%s()' を呼び出してはいけません。 汎整数拡張 : unsigned char は signed int に拡張されます。 汎整数拡張 : unsigned short は signed int に拡張されます。 ループが 1 回しか実行されません。 ループ本体の中で、制御変数'%s'が変更されています。 タグ'%s'を使うことによってより広域な宣言を隠しています。 関数'%s()'を定義する際に識別子リストと仮引数宣言を分離して記述するのは、旧式の方法です。 ©2003 Programming Research Ltd / (株)東陽テクニカ 26 メッセー ジ番号 3101 3104 3105 3106 3108 3110 3120 3121 3140 3205 3208 3209 3210 3211 3302 3303 3304 3305 3309 3310 3311 3312 3313 3316 3323 3328 3330 3331 3332 3333 3334 3335 3336 3344 3404 3411 3412 3413 3414 3415 3416 メッセージ 単項演算子 '-' を unsigned int または unsigned long に対して使用すると、結果が'unsigned'に なってしまいます。 #pragma '%s' は不正な実引数を持つので無視されました。 #pragma ブロックが、#pragma %s によって閉じられていません。 この #指令は無視されています。この#指令は#pragma %s を期待する#pragma ブロックの中に存 在します。 [S] 入れ子(ネスティング)のコメントは ISO 標準では認識されないため、使用するべきではありま せん。 この ','の左オペランドは何の副作用もありません。 整数定数'%s'が直接使用されています。これは避けるべきです。 浮動小数点型定数'%s'が直接使用されています。これは避けるべきです。 コメントのない空の文が、それ自身だけで 1 行に置かれています。 識別子 '%s'はその有効範囲で使用されていません。削除可能です。 '%s()' は値を返しますが、無視されていることがあります。 '%s()' は値を返しますが、いつも無視されています。 識別子 '%s'は広域宣言されましたが使用されていません。 識別子 '%s'は広域定義されましたが使用されていません。 定数式での符号無しの引き算の結果が 0 を下回ったため、上位ビットが失われました。 定数式での符号無しの演算の結果が最大値を超えたため、上位ビットが失われました。 定数式での符号無しの掛け算の結果が最大値を超えたため、上位ビットが失われました。 より制限された境界調整へのポインタキャストです。 この'switch'文の条件式は定数式です。 この構造体タグ'%s'の定義はまだ、与えられていません。 このブロックの外側からラベル '%s' へジャンプしています。ローカルな初期化は行なわれません。 [U] ラベル '%s' が、そこにジャンプすると実行されないローカルな初期化文を含むブロック内にあ ります。 この構造体タグ'%s'の定義が見つかりません。 符号無しのデータを 0 と比較するのは危険です。 このループの制御条件が定数値です。 符号無しの変数を負の定数と比較しています。これは危険です。 関数 '%s()'が、可変個の実引数を伴って呼び出されています。 [U] '%s()'の値が使用されていますが、値を返しません。この振る舞いは未定義です。 この '#if…' で使用されているマクロ '%s'が定義されていません。 break'文は 'switch'文の中でのみ使用されるべきです。 この'%s'の宣言はより広域な宣言を隠しています。 関数プロトタイプがありません。省略時解釈で'extern int %s'が挿入されます。 この列挙型はまだ定義されていません。 値のテストは明示的に行うべきです。 *p++ の意味は *(p++) であり、(*p)++ ではありません。この式には副作用がありません。 マクロ定義の中に、対になっていない角括弧または括弧があります。 マクロ定義の中に、'{', '}', ';' またはキーワード予約語が含まれています。 このマクロ定義は typedef に置き換えることができるはずです。 マクロ定義に記憶域修飾子 '%s'が含まれています。 演算子 '&&', '||', '? :' の右オペランドに副作用があります。 この論理式に副作用があります。 ©2003 Programming Research Ltd / (株)東陽テクニカ 27 メッセー ジ番号 3418 3419 3420 3426 3428 3430 3437 3438 3607 3611 3612 3613 3616 3617 3623 3624 3651 3661 3662 3700 3701 3703 3705 3707 3708 3709 3710 3711 3712 3713 3715 3717 3719 3720 3721 3722 3723 3725 3727 3729 3730 3731 3732 メッセージ カンマ演算子が for ループのヘッダで使用されています。 for'文の初期化式に副作用がありません。 'for'文の増分式に副作用がありません。 カンマ演算子の右側に副作用がなく、その値は使用されません。 マクロ定義に型修飾子'%s'が含まれています。 マクロの実引数は括弧で囲むべきです。 [U] 'assert'マクロを抑制してこの名前の関数を呼べるようにしています。未定義の振る舞いを生じ ます。 [U] 'assert'マクロを#undef してその名前の関数を呼べるようにすると、未定義の振る舞いになりま す。 仮引数 '%s'は関数として宣言されているので、関数ポインタに暗黙の変換が行われます。 単なる char と負の定数との比較には、移植性がありません。 単なる char と 0 との比較には、移植性がありません。 コンパイラによってはこの 8 または 9 を 8 進数定数の一部とみなします。 文字定数はプリプロセッサの演算での値と実際のコードでの値が異なるかもしれません。 構造体/共用体 の代入は、古いコンパイラではサポートしていません。 関数に構造体または共用体を値で渡しています。 関数から構造体または共用体を値で返しています。 サイズが不明な配列に typedef を使用することは予期できない結果を引き起こします。 単なる int のビットフィールドと 0 との比較には、移植性がありません。 単なる int のビットフィールドと負の定数との比較には、移植性がありません。 暗黙のキャスト: char から signed char。移植性のない単なる char からの型変換です。 暗黙のキャスト: char から unsigned char。移植性のない単なる char からの型変換です。 暗黙のキャスト: char から unsigned short。移植性のない単なる char からの型変換です。 暗黙のキャスト: char から unsigned int。移植性のない単なる char からの型変換です。 暗黙のキャスト: char から long。移植性のない単なる char からの型変換です。 暗黙のキャスト: char から float。整数から浮動小数点への型変換です。 暗黙のキャスト: char から doublet。整数から浮動小数点への型変換です。 暗黙のキャスト: char から long double。整数から浮動小数点への型変換です。 暗黙のキャスト: unsigned char から char。移植性のない単なる char への型変換です。 暗黙のキャスト: unsigned char から signed char。符号無しから符号付きへの型変換です。 暗黙のキャスト: unsigned char から short。 暗黙のキャスト: unsigned char から int。 暗黙のキャスト: unsigned char から long。 暗黙のキャスト: unsigned char から float。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned char から double。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned char から long double。 整数から浮動小数点数への変換です。 暗黙のキャスト: signed char から char。 単なる char への移植性のない変換です。 暗黙のキャスト: signed char から unsigned char。 符号付きから符号無しへの変換です。 暗黙のキャスト: signed char から unsigned short。 符号付きから符号無しへの変換です。 暗黙のキャスト: signed char から unsigned int。 符号付きから符号無しへの変換です。 暗黙のキャスト: signed char から unsigned long。 符号付きから符号無しへの変換です。 暗黙のキャスト: signed char から float。 整数から浮動小数点数への変換です。 暗黙のキャスト: signed char から double。 整数から浮動小数点数への変換です。 暗黙のキャスト: signed char から long double。 整数から浮動小数点数への変換です。 ©2003 Programming Research Ltd / (株)東陽テクニカ 28 メッセー ジ番号 3733 3734 3735 3736 3738 3740 3741 3742 3743 3744 3745 3746 3747 3748 3750 3752 3753 3754 3755 3756 3757 3758 3759 3760 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3774 3775 3776 3777 メッセージ 暗黙のキャスト: short から char。 より小さな型への変換。 単なる char への移植性のない変換で す。 暗黙のキャスト: short から signed char。 より小さな型への変換です。 暗黙のキャスト: short から unsigned char。 符号付きから より小さな符号無しへの変換です。 暗黙のキャスト: short から unsigned short。 符号付きから符号無しへの変換です。 暗黙のキャスト: short から unsigned int。 符号付きから符号無しへの変換です。 暗黙のキャスト: short から unsigned long。 符号付きから符号無しへの変換です。 暗黙のキャスト: short から float。 整数から浮動小数点数への変換です。 暗黙のキャスト: short から double。 整数から浮動小数点数への変換です。 暗黙のキャスト: short から long double。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned short から char。 より小さな型への変換。単なる char への移植性のな い変換です。 暗黙のキャスト: unsigned short から signed char。符号無しから より小さな符号付きへの変換で す。 暗黙のキャスト: unsigned short から unsigned char。 より小さな型への変換です。 暗黙のキャスト: unsigned short から short。 符号無しから符号付きへの変換です。 暗黙のキャスト: unsigned short から int。 暗黙のキャスト: unsigned short から long。 暗黙のキャスト: unsigned short から float。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned short から double。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned short から long double。 整数から浮動小数点数への変換です。 暗黙のキャスト: int から char。 より小さな型への変換。 単なる char への移植性のない変換で す。 暗黙のキャスト: int から signed char。 より小さな型への変換です。 暗黙のキャスト: int から unsigned char。 符号付きから より小さな符号無しへの変換です。 暗黙のキャスト: int から short。 より小さな型への変換です。 暗黙のキャスト: int から unsigned short。 符号付きから より小さな符号無しへの変換です。 暗黙のキャスト: int から unsigned int。 符号付きから符号無しへの変換です。 暗黙のキャスト: int から unsigned long。 符号付きから符号無しへの変換です。 暗黙のキャスト: int から float。 整数から浮動小数点数への変換です。 暗黙のキャスト: int から double。 整数から浮動小数点数への変換です。 暗黙のキャスト: int から long double。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned int から char。 小さな型への変換。 単なる char への移植性のない変 換です。 暗黙のキャスト: unsigned int から signed char。符号無しから より小さな符号付きへの変換です。 暗黙のキャスト: unsigned int から unsigned char。 より小さな型への変換です。 暗黙のキャスト: unsigned int から short。 符号無しから より小さな符号付きへの変換です。 暗黙のキャスト: unsigned int から unsigned short。 より小さな型への変換です。 暗黙のキャスト: unsigned int から int。 符号無しから符号付きへの変換です。 暗黙のキャスト: unsigned int から long。 暗黙のキャスト: unsigned int から float。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned int から double。 整数から浮動小数点数への変換です。 暗黙のキャスト: unsigned int から long double。 整数から浮動小数点数への変換です。 暗黙のキャスト: long から char。 より小さな型への変換。単なる char への移植性のない変換で す。 ©2003 Programming Research Ltd / (株)東陽テクニカ 29 メッセー ジ番号 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3821 3822 3823 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 変換です。 暗黙のキャスト: す。 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: 暗黙のキャスト: メッセージ long から signed char。 より小さな型への変換です。 long から unsigned char。 符号付きから より小さな符号無しへの変換です。 long から short。 より小さな型への変換です。 long から unsigned short。符号付きから より小さな符号無しへの変換です。 long から int。 より小さな型への変換です。 long から unsigned int。 符号付きから より小さな符号無しへの変換です。 long から unsigned long。 符号付きから符号無しへの変換です。 long から float。 整数から浮動小数点数への変換です。 long から double。 整数から浮動小数点数への変換です。 long から long double。 整数から浮動小数点数への変換です。 unsigned long から char。 より小さな型への変換。単なる char への移植性のない unsigned long から signed char。 符号無しから より小さな符号付きへの変換で unsigned long から unsigned char。 より小さな型への変換です。 unsigned long から short。 符号無しから より小さな符号付きへの変換です。 unsigned long から unsigned short。 より小さな型への変換です。 unsigned long から int。 符号無しから より小さな符号付きへの変換です。 unsigned long から unsigned int。 より小さな型への変換です。 unsigned long から long。 符号無しから符号付きへの変換です。 unsigned long から float。 整数から浮動小数点数への変換です。 unsigned long から double。 整数から浮動小数点数への変換です。 unsigned long から long double。 整数から浮動小数点数への変換です。 float から char。 精度の損失が起こり得ます。 float から signed char。 精度の損失が起こり得ます。 float から unsigned char。 精度の損失が起こり得ます。 float から short。 精度の損失が起こり得ます。 float から unsigned short。 精度の損失が起こり得ます。 float から int。 精度の損失が起こり得ます。 float から unsigned int。 精度の損失が起こり得ます。 float から long。 精度の損失が起こり得ます。 float から unsigned long。 精度の損失が起こり得ます。 double から char。 精度の損失が起こり得ます。 double から signed char。 精度の損失が起こり得ます。 double から unsigned char。 精度の損失が起こり得ます。 double から short。 精度の損失が起こり得ます。 double から unsigned short。 精度の損失が起こり得ます。 double から int。 精度の損失が起こり得ます。 double から unsigned int。 精度の損失が起こり得ます。 double から long。 精度の損失が起こり得ます。 double から unsigned long。 精度の損失が起こり得ます。 double から float。 精度の損失が起こり得ます。 long double から char。 精度の損失が起こり得ます。 long double から signed char。 精度の損失が起こり得ます。 long double から unsigned char。 精度の損失が起こり得ます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 30 メッセー ジ番号 3824 3825 3826 3827 3828 3829 3830 3831 3891 3894 3900 3901 3903 3905 3907 3908 3909 3910 3911 3912 3913 3915 3917 3919 3920 3921 3922 3923 3925 3927 3929 3930 3931 3932 3933 3934 3935 3936 3938 メッセージ 暗黙のキャスト: long double から short。 精度の損失が起こり得ます。 暗黙のキャスト: long double から unsigned short 。 精度の損失が起こり得ます。 暗黙のキャスト: long double から int。 精度の損失が起こり得ます。 暗黙のキャスト: long double から unsigned int。 精度の損失が起こり得ます。 暗黙のキャスト: long double から long。 精度の損失が起こり得ます。 暗黙のキャスト: long double から unsigned long。 精度の損失が起こり得ます。 暗黙のキャスト: long double から float。 精度の損失が起こり得ます。 暗黙のキャスト: long double から double。 精度の損失が起こり得ます。 右シフトされた式をより大きな型へキャストしています。 右シフトされた式をより小さな型へキャストしています。 char の値が signed char %s()から返されています。単なる char の移植性のない型変換です。 char の値が unsigned char %s()から返されています。単なる char の移植性のない型変換です。 char の値が unsigned short %s()から返されています。単なる char の移植性のない型変換です。 char の値が unsigned int %s()から返されています。単なる char の移植性のない型変換です。 char の値が unsigned long %s()から返されています。単なる char の移植性のない型変換です。 char の値が float %s()から返されています。整数から浮動小数点数への変換です。 char の値が double %s()から返されています。整数から浮動小数点数への変換です。 char の値が long double %s()から返されています。整数から浮動小数点数への変換です。 unsigned char の値が char %s()から返されています。単なる char への移植性のない変換です。 unsigned char の値が signed char %s()から返されています。符号無しから符号付きへの変換で す。 unsigned char の値が short %s()から返されています。 unsigned char の値が int %s()から返されています。 unsigned char の値が long %s()から返されています。 unsigned char の値が float %s()から返されています。整数から浮動小数点数への変換です。 unsigned char の値が double %s()から返されています。整数から浮動小数点数への変換です。 unsigned char の値が long double %s()から返されています。整数から浮動小数点数への変換で す。 signed char の値が char %s()から返されています。単なる char への移植性のない変換です。 signed char の値が unsigned char %s()から返されています。符号付きから符号無しへの変換で す。 signed char の値が unsigned short %s()から返されています。 符号付きから符号無しへの変換で す。 signed char の値が unsigned int %s()から返されています。符号付きから符号無しへの変換です。 signed char の値が unsigned long %s()から返されています。 符号付きから符号無しへの変換で す。 signed char の値が float %s()から返されています。整数から浮動小数点数への変換です。 signed char の値が double %s()から返されています。整数から浮動小数点数への変換です。 signed char の値が long double %s()から返されています。 整数から浮動小数点数への変換です。 short の値が char %s()から返されています。より小さな型への変換です。単なる char への移植性 のない変換です。 short の値が signed char %s()から返されています。より小さな型への変換です。 unsigned char %s()から返されています。符号付きから小さな符号無しへの変換です。 short の値が unsigned short %s()から返されています。符号付きから符号無しへの変換です。 short の値が unsigned int %s()から返されています。符号付きから符号無しへの変換です。 ©2003 Programming Research Ltd / (株)東陽テクニカ 31 メッセー ジ番号 3940 3941 3942 3943 3944 3945 3946 3947 3948 3950 3952 3953 3954 3955 3956 3957 3958 3959 3960 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3974 3975 3976 3977 メッセージ short の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。 short の値が float %s()から返されています。整数から浮動小数点数への変換です。 short の値が double %s()から返されています。整数から浮動小数点数への変換です。 short の値が long double %s()から返されています。整数から浮動小数点数への変換です。 unsigned short の値が char %s()から返されています。より小さな型への変換です。単なる char へ の移植性のない変換です。 unsigned short の値が signed char %s()から返されています。符号無しから より小さな符号付きへ の変換です。 unsigned short の値が unsigned char %s()から返されています。より小さな型への変換です。 unsigned short の値が short %s()から返されています。符号無しから符号付きへの変換です。 unsigned short の値が int %s()から返されています。 unsigned short の値が long %s()から返されています。 unsigned short の値が float %s()から返されています。整数から浮動小数点数への変換です。 unsigned short の値が double %s()から返されています。整数から浮動小数点数への変換です。 unsigned short の値が long double %s()から返されています。整数から浮動小数点数への変換で す。 int の値が char %s()から返されています。より小さな型への変換です。単なる char への移植性の ない変換です。 int の値が signed char %s()から返されています。より小さな型への変換です。 int の値が unsigned char %s()から返されています。符号付きから より小さな符号無しへの変換で す。 int の値が short %s()から返されています。より小さな型への変換です。 int の値が unsigned short %s()から返されています。符号付きから より小さな符号無しへの変換で す。 int の値が unsigned int %s()から返されています。符号付きから符号無しへの変換です。 int の値が unsigned long %s()から返されています。符号付きから符号無しへの変換です。 int の値が float %s()から返されています。整数から浮動小数点数への変換です。 int の値が double %s()から返されています。整数から浮動小数点数への変換です。 int の値が long double %s()から返されています。整数から浮動小数点数への変換です。 unsigned int の値が char %s()から返されています。より小さな型への変換です。単なる char への 移植性のない変換です。 unsigned int の値が signed char %s()から返されています。符号無しから より小さな符号付きへの 変換です。 unsigned int の値が unsigned char %s()から返されています。より小さな型への変換です。 unsigned int の値が short %s()から返されています。符号無しから より小さな符号付きへの変換で す。 unsigned int の値が unsigned short %s()から返されています。より小さな型への変換です。 unsigned int の値が int %s()から返されています。符号無しから符号付きへの変換です。 unsigned int の値が long %s()から返されています。 unsigned int の値が float %s()から返されています。整数から浮動小数点数への変換です。 unsigned int の値が double %s()から返されています。整数から浮動小数点数への変換です。 unsigned int の値が long double %s()から返されています。整数から浮動小数点数への変換で す。 long の値が char %s()から返されています。より小さな型への変換です。単なる char への移植性 のない変換です。 ©2003 Programming Research Ltd / (株)東陽テクニカ 32 メッセー ジ番号 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4010 4011 4012 4013 4014 4015 4016 メッセージ long の値が signed char %s()から返されています。より小さな型への変換です。 long の値が unsigned char %s()から返されています。符号付きから より小さな符号無しへの変換で す。 long の値が short %s()から返されています。より小さな型への変換です。 long の値が unsigned short %s()から返されています。符号付きから より小さな符号無しへの変換 です。 long の値が int %s()から返されています。より小さな型への変換です。 long の値が unsigned int %s()から返されています。符号付きから より小さな符号無しへの変換で す。 long の値が unsigned long %s()から返されています。 符号付きから符号無しへの変換です。 long の値が float %s()から返されています。整数から浮動小数点数への変換です。 long の値が double %s()から返されています。整数から浮動小数点数への変換です。 long の値が long double %s()から返されています。整数から浮動小数点数への変換です。 unsigned long の値が char %s()から返されています。より小さな型への変換です。単なる char への 移植性のない変換です。 unsigned long の値が signed char %s()から返されています。符号無しから より小さな符号付きへの 変換です。 unsigned long の値が unsigned char %s()から返されています。より小さな型への変換です。 unsigned long の値が short %s()から返されています。符号無しから より小さな符号付きへの変換 です。 unsigned long の値が unsigned short %s()から返されています。より小さな型への変換です。 unsigned long の値が int %s()から返されています。符号無しから より小さな符号付きへの変換で す。 unsigned long の値が unsigned int %s()から返されています。より小さな型への変換です。 unsigned long の値が long %s()から返されています。符号無しから符号付きへの変換です。 unsigned long の値が float %s()から返されています。整数から浮動小数点数への変換です。 unsigned long の値が double %s()から返されています。整数から浮動小数点数への変換です。 unsigned long の値が long double %s()から返されています。整数から浮動小数点数への変換で す。 float の値が char %s()から返されています。精度の損失が起こり得ます。 float の値が signed char %s()から返されています。精度の損失が起こり得ます。 float の値が unsigned char %s()から返されています。精度の損失が起こり得ます。 float の値が short %s()から返されています。精度の損失が起こり得ます。 float の値が unsigned short %s()から返されています。精度の損失が起こり得ます。 float の値が int %s()から返されています。精度の損失が起こり得ます。 float の値が unsigned int %s()から返されています。精度の損失が起こり得ます。 float の値が long %s()から返されています。精度の損失が起こり得ます。 float の値が unsigned long %s()から返されています。精度の損失が起こり得ます。 double の値が char %s()から返されています。精度の損失が起こり得ます。 double の値が signed char %s()から返されています。精度の損失が起こり得ます。 double の値が unsigned char %s()から返されています。精度の損失が起こり得ます。 double の値が short %s()から返されています。精度の損失が起こり得ます。 double の値が unsigned short %s()から返されています。精度の損失が起こり得ます。 double の値が int %s()から返されています。精度の損失が起こり得ます。 double の値が unsigned int %s()から返されています。精度の損失が起こり得ます。 ©2003 Programming Research Ltd / (株)東陽テクニカ 33 メッセー ジ番号 4017 4018 4019 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4120 4123 4124 4125 4140 4150 4151 4152 4153 メッセージ double の値が long %s()から返されています。精度の損失が起こり得ます。 double の値が unsigned long %s()から返されています。精度の損失が起こり得ます。 double の値が float %s()から返されています。精度の損失が起こり得ます。 long double の値が char %s()から返されています。精度の損失が起こり得ます。 long double の値が signed char %s()から返されています。精度の損失が起こり得ます。 long double の値が unsigned char %s()から返されています。精度の損失が起こり得ます。 long double の値が short %s()から返されています。精度の損失が起こり得ます。 long double の値が unsigned short %s()から返されています。精度の損失が起こり得ます。 long double の値が int %s()から返されています。精度の損失が起こり得ます。 long double の値が unsigned int %s()から返されています。精度の損失が起こり得ます。 long double の値が long %s()から返されています。精度の損失が起こり得ます。 long double の値が unsigned long %s()から返されています。精度の損失が起こり得ます。 long double の値が float %s()から返されています。精度の損失が起こり得ます。 long double の値が double %s()から返されています。精度の損失が起こり得ます。 ビット演算子 '&' の両側のオペランドが論理式です。 ビット演算子 '|' の両側のオペランドが論理式です。 算術演算子の両側のオペランドが論理式です。 算術演算子の左側のオペランドが論理式です。 算術演算子の右側のオペランドが論理式です。 論理積演算子 '&&' の両側のオペランドが算術式です。 論理和演算子 '||' の両側のオペランドが算術式です。 論理演算子の左側オペランドが算術式です。 論理演算子の右側のオペランドが算術式です。 論理否定演算子 '!' が算術式に使用されています。 関係演算子の右側のオペランドが論理式です。 関係演算子の左側のオペランドが論理式です。 代入時に、整数式が暗黙的により大きな型にキャストされます。 代入時に、'float'式が暗黙的に 'double'にキャストされます。 代入時に、'float'式が暗黙的に 'long double'にキャストされます。 代入時に、'double'式が暗黙的に 'long double'にキャストされます。 関数の戻り値にローカルなデータのアドレスを返しています。 文字の 'l' と '1' だけが使用されている名前 '%s' は混乱を引き起こすかもしれません。 文字の '0' と 'O' だけが使用されている名前 '%s' は混乱を引き起こすかもしれません。 文字の 'l' と '1' が使用されている名前 '%s' は混乱を引き起こすかもしれません。 文字の '0' と 'O' が使用されている名前 '%s' は混乱を引き起こすかもしれません。 注)ここに記載されいる警告文以外にも用語の統一などで若干の変更を加えたものがあります。 ©2003 Programming Research Ltd / (株)東陽テクニカ 34 付録C. 付録C. 削除された 削除されたメッセージ されたメッセージ 警告 番号 99 404 405 406 1320 1321 2202 2206 3215 3327 3702 3704 3706 3714 3716 3718 3724 3726 3728 3737 3739 3749 3751 3761 3773 3808 3809 3820 3902 3904 3906 3914 メッセージ 評価版のため 各メッセージは2度までしか表示されません。 副作用完了点の間で 2つ以上のデータ・アイテムが変更されるかもしれません。 - データが オーバーラップすると危険です。 副作用完了点の間で データ・アイテムが変更され、アクセスされます。 - データがオーバーラッ プすると危険です。 副作用完了点の間で データ・アイテムが変更され、アクセスされるかもしれません。 - データが オーバーラップすると危険です。 列挙型へのキャストは C++では、非常に厳しく制限されています。この操作は変換された値が 正式の列挙子(enumerator)の値になる場合にのみ定義されます。 このキャストは C++では定義されていません。 キャストされた値がその型の宣言された 列挙子の 1つになっていないからです。 この波括弧{}のスタイルは このファイルの中の前のスタイルと一貫していません。 この行のインデンテーションは これ以降のインデンテーションと一貫していません。 '%s'は、初期化された後、 この変更までアクセスされていません。 - この変更を初期化で行う事 が可能かもしれません。 符号無しの 'char' は 決して負の値になりません。- このテストは正しく評価されません。 暗黙のキャスト: 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()から返されました。 ©2003 Programming Research Ltd / (株)東陽テクニカ 35 警告 番号 3916 3918 3924 3926 3928 3937 3939 3949 3951 3961 3973 4008 4009 4020 4701 4702 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 メッセージ unsigned char 型の値が unsigned int %s()から返されました。 unsigned char 型の値が unsigned long %s()から返されました。 signed char 型の値が short %s()から返されました。 signed char 型の値が int %s()から返されました。 signed char 型の値が long %s()から返されました。 short 型の値が int %s()から返されました。 short 型の値が long %s()から返されました。 unsigned short 型の値が unsigned int %s()から返されました。 unsigned short 型の値が unsigned long %s()から返されました。 int 型の値が long %s()から返されました。 unsigned int 型の値が unsigned long %s()から返されました。 float 型の値が double %s()から返されました。 float 型の値が long double %s()から返されました。 double 型の値が long double %s()から返されました。 このファイルにはもっとコメントがあるべきです。 このファイルにはとても多くの割合で コメントが含まれています。これは読みにくくなりそうです。 '%s()' は高いノット密度を持ち、 構造化されていません。ループの中で'break'や'continue'を使 用するのは 避けるべきです。'goto'は使用すべきではありません。 '%s()' はとても高いノット密度を持ち、 構造化されていません。ループの中で'break'や'continue' を使用するのは 避けるべきです。'goto'は使用すべきではありません。 '%s()' は非常に高いノット密度を持ち、 構造化されていません。ループの中で'break'や 'continue'を使用するのは 避けるべきです。'goto'は使用すべきではありません。 '%s()' は 判定と判定の間に非常にたくさんのインライン・コードを含んでいます。 これらのコード のブロックのいくつかをサブ関数にする事を考えるべきでしょう。 '%s()' は高い判定密度を持っています。 サブ関数に分割して論理を明確にすると 良いかもしれ ません。 '%s()' はかなりの数の 判定を持っており、理解するのが難しいかも知れません。 '%s()' は高い判定数を持っており、 理解可能な限界を超えているかもしれません。 論理の数を 減らすか関数をサブ関数へ分割することによって これを避けることができます。 '%s()' は極端な数の判定を持っています。 これでは理解できないかも知れません。サブ関数に 分割するべきです。 '%s()' には大変多くの 戻る方向のジャンプが存在します。理解するのが難しいコードになりそう です。 このファイルを語彙分析した結果、 同じ又はよく似たコードを含むブロックがあります。 これは、 サブ関数にできるでしょう。 '%s()' はおそらく長過ぎます。 サブ関数に分割した方がよさそうです。 このファイル中の関数の平均行数が 大きすぎます。このプログラムのモジュール化のレビューを する ことは有益かもしれません。 '%s()' は高いパスカウントを 持っています。テストするのは困難かもしれません。 '%s()' は非常に高いパスカウントを 持っており、テストするのは難しいかも知れません。 '%s()' は おそらくテストできません。サブ関数に分割するべきです。 ©2003 Programming Research Ltd / (株)東陽テクニカ 36 付録D. 付録D. ライセンスの ライセンスのインストール及 インストール及び設定 ここでは、「ライセンスのインストール及び設定」の簡単な手順を説明しています。FLEXlm につい ての詳細は、QA C ユーザーズガイドの第 12 章および enduser.pdf をご参照ください。 付録D.1. 付録D.1. FLEXlm のインストール QA C の CD にある”\FLEXlm\FLEXlm_for_PC.zip を、任意のフォルダ(例: C:\Program Files\PRQA\FLEXlm)にコピーし、解凍してください。 FLEXlm_for_PC.zip には以下のファイルが圧縮されています。 ファイル名 説明 lmutil.exe ライセンス・ユーティリティ・プログラム lmgrd.exe ライセンス・デーモン・プログラム lmtools.exe ライセンス管理用プログラム prflexd Programmin Research Ltd.のライセンス・デーモン enduser.pdf FLEXlm のエンドユーザ用ガイド(英語版) 付録D.2. 付録D.2. ネットワーク・ ネットワーク・ライセンス・ ライセンス・サーバの サーバの起動 ① ライセンスファイルを FLEXlm_for_PC.zip を解凍したフォルダに入れてください。 ② lmtools.exe を実行し、"Config Services"タブを開き、下図のように入力してください。 ◆Service Name 任意のサービス名を入力してください。(記入例:PR:QA License Manager) ◆Path to the lmgrd.exe file lmgrd.exe を絶対パスで指定します。Browse ボタンで lmgrd.exe を指定してください。 ©2003 Programming Research Ltd / (株)東陽テクニカ 37 ◆Path to the license file ライセンスファイル(デフォルト:license.lic)を絶対パスで指定します。Browse ボタンでライ センスファイルを指定してください ◆Path to the debug log file ログをとるためのファイル名を絶対パスで指定してください。 ◆Use Services ・・・ チェックしてください。(Windows NT/200/XP のみ) ◆Start Server at Power UP ・・・ チェックしてください。 ③ "Save Service"をクリックして、この設定を保存します。 ④ "Start/Stop/Reread"タブを開き、"Start Server"をクリックします。 ⑤ 以上で終了です。ネットワーク・ライセンス・サーバーが起動します。 付録D.3. 付録D.3. ネットワーク・ サーバ゙に対するクライアント ネットワーク・ライセンス・ ライセンス・サーハ するクライアントの クライアントの設定 以下の操作は、クライアントに QA C4.5.3J インストールした後に実施してください。 ① QA C4.5.3J の GUI を起動してください。 ② 次の画面が表示されますので"Specify the License Server"を選択し、"Next"をクリックします。 ©2003 Programming Research Ltd / (株)東陽テクニカ 38 ③ ライセンス・サーバ名を@<サーバ名>の形式で入力し、”Next”をクリックします。例えば、ライ センス・サーバ名が toyo の場合は、@toyo と入力して下さい。 ④ ”Finish”をクリックして下さい。 ⑤ 以上で終了です。QA C が起動します。 ©2003 Programming Research Ltd / (株)東陽テクニカ 39
© Copyright 2024 Paperzz