PC用 - 東陽テクニカ

リリースノート
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++ライセンス申請書」と同等の情報を[email protected] に 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
[email protected]
E-Mail(サポート窓口)
[email protected]
10. Programming Research Limited へのお問合
へのお問合せ
問合せ
以下に示す Programming Research Ltd.の本社に直接お問合せいただくこともできます。
電話
FAX
e-mail
+44 (0) 1 932 888 080
+44 (0) 1 932 888 081
[email protected]
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] 基本ソース文字集合に無い文字が使われています。
ソースが複雑すぎます。この問題を東陽テクニカ([email protected])に連絡して下さい。
[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