|
質問1.
|
「拡張クラスのC++(-ex C++)」オプションはどのようなことを行うためのオプションなのでしょうか?
QAC全般
|
戻る
|
|
回答1.
|
Cコンパイラの中には、C++言語の機能の1つである「参照演算子 &」
の使用を許しているものがあります。お使いのCコンパイラが
「参照演算子 &」の使用を許している場合は
、-ex C++オプションを設定する必要があります。
ただし、「参照演算子 &」がその意味も含めて正式に解釈される
ようになるわけではないので注意してください。

また、お使いのCコンパイラが、「//コメント」の使用を許している
場合にも、-ex C++オプションを設定する必要があります。
こちらは、「//コメント」がその意味も含めて正式に解釈される
ようになります。

なお、このオプションを使ったとしても、C++言語で記述されたコード
が解析できるようになるわけではありません。QACでC++言語で記述
されたコードを解析すると、C++言語のキーワードや
文法(例えば class など)
が記述されている箇所で文法エラーになります
QACとQAC++が対象とするコードについては、
「CとC++のコードが混在している場合、QACとQAC++のどちらで解析すればよいのでしょうか?」をご参照ください。

|
|
質問2.
|
QA Cは#machineという記述が認識できないようです。認識させる方法はありませんか?
QAC全般

下記のコードで、#machineを使用している行に対して、メッセージ899やレベル9のエラ
ーが出力されます。
また、#ifの結果が「偽」になっているようです。
#machineを認識させ、#ifの結果を「真」になるようにすることはできませんか?
#machine i386
 #if #machine(i386) ・・・ #else ・・・ #endif

|
戻る
|
|
回答2.
|
解析オプション"-EX ANSIPC"または"-EX PC"を使用してください。
解析オプション"-EX ANSIPC"または"-EX PC"を指定することで、"#machine "が認識され、
"#if #machine(i386)"の結果を「真」として扱うことができます。
(Version 4.2 では -EX SRV4 でも可)
しかし、#machineは、ISO Cで認められていない記述方法であることを指摘する
メッセージは出力されてしまいます。この警告は、QAC4.5.3J以降、レベル9の
警告になりました。そのため、QAC4.5.3J以降は、#machineを使用するとき、
レベル9のエラーを抑止することはできません。

|
|
質問3.
|
QACで解析を行うとき、大文字小文字の違いを認識しないように設定することはできますか?
QAC全般

Windows環境で開発を行っており、そのソースを UNIX(またはLinux)版の QAC で解析しようとしています。
グローバルな変数や関数について、大文字小文字の違いを区別しないという設定がありますが、
インクルードファイルの参照において、同様の設定はできないのでしょうか?

|
戻る
|
|
回答3.
|
#includeで指定したファイル名とパス名をすべて小文字として扱うことは可能です。
コンパイラパーソナリティの拡張で、PCまたはANSIPCをチェックしてください。
すべて小文字として扱うことができます。

|
|
質問4.
|
QAC++で解析を行うとき、大文字小文字の違いを認識しないように設定することはできますか?
QAC++全般

Windows上ソフト開発を行っており、そのソースを UNIX(またはLinux)版の QA C++ で解析しようとしています。
そこで以下の質問があります。
☆ QA C++にソースを通す際に、大文字・小文字のチェックをしない
ようにするオプションはありませんか。

|
戻る
|
|
回答4.
|
QAC++ ではサポートしていません。
申し訳ございませんが、QAC++ ではサポートしていません。

|
|
質問5.
|
Windows版QAC/QAC++でメトリックス情報をCSVファイルへ保存するには?

Windows版 QA C/QA C++ では解析で得られたメトリックス情報を GUIから CSVへ保存できますか?

|
戻る
|
|
回答5.
|
メトリックスブラウザからCSV形式で保存することができます。
QACやQAC++ のバージョンによって、若干操作方法が異なりますが、QAC7.0JやQAC++2.3.1Jの場合、
ブラウザ上の[ファイル]メニューから[データのエクスポート]を選択し、表示されたダイアログ上で保存する
ファイル名とパスを指定します。

|
|
質問6.
|
シンタックスエラーが一定数を超えたとき、それ以上の解析をしないような設定は可能でしょうか?
QAC全般

シンタックスエラーのメッセージは、ほとんどの場合オプション設定の不足であるということを聞きましたが、設定不足のまま解析してもしかたがないので、一定の量が出力されたところで解析をやめるような設定は可能でしょうか?

|
戻る
|
|
回答6.
|
解析オプションの -maxerr を使用してください。
例えば -maxerr=10 というオプションを指定して解析を行うと、
シンタックスエラーが10回出力されたところで解析を中断します。
シンタックスエラーに相当するメッセージは、
Version4.xJまでは、HARD ERRORと表示されるメッセージの出力数ですが、
Version6.xJ以降では、レベル9のエラーの出力数になります。
UNIX版 GUI
4.2Jでは GUIで「解析パーソナリティ」->「詳細オプション」の
「最大エラー回数」のフィールドで設定することができます。
この設定によって途中で解析を中止すると、解析中に表示される
「ステータスウィンドウ」の「ステータス」に「失敗」と表示されます。
4.5.3J以降のGUIでは、アナライザ・パーソナリティの「解析処理」にある
「中止するまでのハードエラー最大出現回数」で設定することができます。
この設定によって途中で解析を中止すると、解析中に表示される
「ステータスウィンドウ」の「ステータス」に「解析失敗」と表示されます。
PC版 GUI
4.2Jでは GUIで「アナライザ・パーソナリティ」の設定ダイアログボックスの
「スタイルと構成」のタブをクリックして「メッセージの構成」部分の
「中止するまでの最大ハードエラー出現回数」のフィールドで設定することができます。
この設定によって途中で解析を中止すると、解析中に表示される
「解析状態画面」の「状態」に「解析ワーニング」と表示されます。
4.5.3J以降のGUIでは、アナライザ・パーソナリティの「解析処理」にある
「中止するまでのハードエラー最大出現回数」で設定することができます。
この設定のために途中で解析を中止すると、解析中に表示される
「解析状態画面」の「状態」に「解析警告」と表示されます。

|
|
質問7.
|
GUIで作成したパーソナリティをコマンドラインで使うには?

GUIで作ったそれぞれのパーソナリティファイルをコマンドラインで再利用する方法を教えてください。

|
戻る
|
|
回答7.
|
-viaオプションを使用してください。
GUIで設定したオプションは、パーソナリティファイルと呼ばれるテキスト形式の
ファイルに保存されます。
-viaオプションで、パーソナリティファイルを指定することで、GUIで設定したオプションを使用することができます。
パーソナリティファイルには、メッセージ(あるいはサブセット)、アナライザ、
コンパイラの3種類があり、それぞれ、p_s、p_a および p_c という拡張子がついています。(QAC4.2Jでは、この他にメトリックス・パーソナリティ(p_m)があります。)
GUIで解析した場合、インクルードパスの検索は、コンパイラ・パーソナリティより、
アナライザ・パーソナリティで設定したインクルードパスを先に検索します。
検索順を同じにするには、コンパイラ・パーソナリティより先にアナライザ・パーソナリティを -via する必要があります。

|
|
質問8.
|
GUIで作成したQAC/QAC++プロジェクトをコマンドラインで使うには?(Windows版)
QA C7.0J/QA C++2.3.1J以降

GUIで作ったプロジェクトファイルをコマンドラインで再利用する方法を教えてください。

|
戻る
|
|
回答8.
|
QAWツールを使用してください。
「保守ユーザ様向け情報」ページより、次の2つのファイルをダウンロードしてください。
- QAW (Windows用)
- QAW用参考バッチファイル (Windows用)
「QAW用参考バッチファイル」内のReadme.pdf にインストール方法
並びに使用方法が記述されています。
バッチファイルのご提供は Windows 用のみとなっておりますのでご了承ください。

|
|
質問9.
|
コマンドラインからQACを実行した場合と、
GUIで実行した場合と結果的になにが違うのですか?

コマンドラインで実行した結果に対して、
Q1:GUIでプロジェクトを開いて、統計図等を表示させることはできますか?

Q2:またはGUIのQACを起動せずに、統計図等を見ることができますか?

|
戻る
|
|
回答9.
|
解析、注釈付きソースコードの出力に関しては何も違いはありません。
コマンドラインで解析後、GUIメニューでソースコードがあるディレクトリに
プロジェクトを作成し、プロジェクトのパラメータ QACOUTPATH(出力パス)をコマンドラインで
設定した QACOUTPATHと同じディレクトリにしますと、プロジェクトに登録されたソースコードは
既に解析済みファイルとなってます。
改めて GUIメニューから解析しなくても、統計図等グラフを表示することができます。
また、GUIのQACを起動せずに、統計図等を見ることができません。
グラフィカルな図を表示するには、必ず QACのメインウィンドウ(GUI)を表示しておく必要があります。
GUIからの操作とコマンドラインでの実行は、解析、注釈付きソースコードの表示に関しては何も違いはありません。
GUIの解析メニューを選択(クリック)するということは、イコール、コマンド qacを起動することで、
GUIの(グラフィカル表示以外の)表示メニューを選択することは、イコール、コマンド errdspを起動することです。
違う点は、図の表示に関しては、GUIだけで利用することができるということです。

|
|
質問10.
|
makefileの -I/-DをどうやってQACやQAC++に反映させるのですか?
|
戻る
|
|
回答10.
|
makefileの -I/-D と同等のオプションがあります。
-I/-Dは、アナライザ、およびコンパイラパーソナリティで設定可能です。
目的別に設定ファイルを分類しておくと再利用しやすくなります。
(1) -I について
「アナライザパーソナリティ」の「プロジェクト・ヘッダ(バージョンによって表現が異なります)」では、
プロジェクト毎に必要なインクルードパス(御自分で作成したヘッダファイルのパス)を設定します。
例:#include "header.h" の header.hがあるフォルダのパス
「コンパイラパーソナリティ」の「システム・ヘッダ(バージョンによって表現が異なります)」では、
システムに依存するヘッダファイルを検索するパスを設定します。
例:#include <header.h> の header.hがあるフォルダのパス
(2) -D について
「アナライザパーソナリティ」「「プロジェクト・マクロ(バージョンによって表現が
異なります)」項目では、プロジェクト毎、個人毎の設定(いわゆるコンパイル・スイッチと称される設定など)を登録します。
例えばmakefileで -DDEBUGとしている場合、DEBUGを登録します。
「コンパイラパーソナリティ」「システム・マクロ(バージョンによって表現が
異なります)」項目では、コンパイラ独自の拡張に対処する設定を登録します。
例)コンパイラ独自の型(例INT64)を、ISO Cの型(long long)に置き換える場合
INT64=long long
コンパイラ特有の予約語(__far)を除去する場合
_far=
-D オプションの設定は、この他にもいくつかの便利な設定方法が準備されています。詳しくは、ユーザーズガイドの -D オプションの説明を見てください。

|
|
質問11.
|
プロジェクトマクロやシステムマクロに文字列を渡すことはできますか?

次のようなコードで、#includeのファイル名は、コンパイルするときに
-Dオプションを使用して指定しています。

#include HEADER1

コンパイラ・パーソナリティやアナライザパーソナリティのマクロ設定で、"header.h"と指定しても、header.h だけになってしまいます。
"header.h" を設定することはできないのでしょうか?

|
戻る
|
|
回答11.
|
QAC Version4.5.3J以降やQAC++1.5J以降の場合、次のように設定することで、文字列を渡すことができます。

QAC_STRING_MAC(x)=#x
MACRO=QAC_STRING_MAC(string)
(注:QAC_STRING_MACは任意の文字列が使用できます)

この設定で、ソースコードの中に書かれたMACROは"string"に置換されます。

例
#include MACRO → #include "string"
char *p = MACRO ; → char *p = "string" ;
Versionに関係なく使用できるのは、「追加インクルード(あるいは強制インクルード)」で指定する方法です。
次の定義をした解析用のヘッダファイルを作成し、-FIオプションで指定します。

#define MACRO "string"

「追加インクルード(あるいは強制インクルード)」をGUIで設定するには、コンパイラパーソナリティ(以前のバージョンはアナライザパーソナリティ)で行います。
解析用のヘッダファイルの中には、文法的に許されるすべてのコードを記述することができます。
ビルトイン関数、ビルトインマクロ、あるいは、特殊なキーワード(レジスタ名など)を
宣言しておけば、より正確な解析結果を得ることができます。

|
|
質問12.
|
QA C/QA C++のGUIプロジェクトに設定されているパーソナリティ・ファイルの内容を参照・編集する方法と参照先パスを変更する方法を教えてください。(Windows版)
QA C4.5.3J以上/QA C++1.5J以上
|
戻る
|
|
回答12.
|
パーソナリティ・ファイルを参照する場合は次の手順で操作します。
- QA C/QA C++のGUIプロジェクトを開きます。
- 画面左部の「プロジェクト・フォルダ」ツリー内で、フォルダ名をダブルクリックします。
- 表示された「フォルダ・パラメータ」内に、フォルダに設定されている3種類のパーソナリティの絶対パスが表示されます。
- 各パーソナリティの右側に表示されているアイコンをクリックすると、パーソナリティ・ファイルの内容を参照・編集することができます。
- 各パーソナリティの右側に表示されている[ブラウズ...]ボタンをクリックすると、パーソナリティファイルの参照先パスを変更することができます。(入力フィールドの値を直接変更することもできます。)
注意:
QA C/QA C++では「プロジェクト・フォルダ」ツリー内のフォルダ
ごとに異なるパーソナリティ・ファイルの参照先パスを設定でき
るようになっています。
このため、あるフォルダのパーソナリティ・ファイルの参照先パスを
変更したとしても、他のフォルダは変更の影響を受けません。
すべてのフォルダに同じパーソナリティ・ファイルを参照させる
場合は、次の手順で操作してください。
- 上記の手順に従って最上位のフォルダのパーソナリティ・ファイルの参照先を変更します。
- 最上位のフォルダ上で右クリックし、ポップアップメニューを開きます。
- [変更をサブフォルダへ反映]を選択し、参照先パスを揃えたいパーソナリティ名、もしくは「全パーソナリティ」を選択します。

|
|
質問13.
|
メニューバーの「構成」>「メッセージ・パーソナリティ...」(アナライザ・パーソナリティ/コンパイラ・パーソナリティ)にプロジェクトで使用しているパーソナリティ・ファイルが表示されません。(Windows版)
QA C4.5.3J-7.0J/QA C++1.5J-2.3.1J
|
戻る
|
|
回答13.
|
「構成」>「メッセージ・パーソナリティ...」(アナライザ・
パーソナリティ/コンパイラ・パーソナリティ) で表示される
ダイアログ上には、<QACインストールディレクトリ>\personalities
(QAC4.5.3Jは <QACインストールディレクトリ>\person)
内のパーソナリティ・ファイルの一覧が表示されます。
プロジェクトで使用しているパーソナリティを表示・編集する方法は、
「QA C/QA C++のGUIプロジェクトに設定されているパーソナリティ・ファイルの内容を参照・編集する方法と参照先パスを変更する方法を教えてください。(Windows版)」
を参照してください。

|
|
質問14.
|
QAC/QAC++でユーザ定義のルールを作成する方法はありますか?
|
戻る
|
|
回答14.
|
QAC/QAC++は以下のユーザ定義可能なルールをサポートしています。
- アナライザ・パーソナリティにおいて警告対象関数(warncall)機能を使用することによる、使用禁止の関数呼び出しに対する警告
- 関数、ファイル、または(QAC++の)クラス・メトリックスに関するしきい値の超過に対する警告
- 2次解析アドオン・モジュールによる命名規則の一連のチェック
- 詳細なコード・レイアウトの一連のチェック(QAC++のみ)
MISRA-Cおよびその他のコーディング規格については、ルールのうち最大で約10%がQAC/QAC++の標準機能では生成されないため、2次解析モジュールを提供しています。ユーザ自身が構文解析結果を使用して2次解析を行うことも可能ですが、要望していただければ、2次解析機能として検討させていただきます。まず 技術サポート宛にお問い合わせください。

|
|
質問15.
|
QACは潜在的なメモリリークを検出できますか?
|
戻る
|
|
回答15.
|
QACは静的解析チェックのライブラリを広範に備えているため、ポインタによりアクセスされたデータ、ポインタ間接参照、ポインタ演算、およびポインタへの危険な操作(const/volatileの破棄、安全でない変換/比較)などを含むメモリリークの問題の様々なカテゴリについて警告します。

|
|
質問16.
|
Windows上でローカル管理者権限を持たずにQAC/QAC++を使用するには?
|
戻る
|
|
回答16.
|
インストールの際、読み取り/書き込みアクセス権のある、Program Filesフォルダ以外の場所(ユーザのホーム・ディレクトリなど)を選択することが可能です。こうすることで、管理者権限がなくても製品をインストールすることができます。

|
|
質問17.
|
プリプロセス済みソース・コードを生成するには?
|
戻る
|
|
回答17.
|
プリプロセス済みソース・コードを生成するには、以下の操作を行います。
- プリプロセス済みソースを生成したいソース・ファイルを含む、プロジェクト内のフォルダを右クリックし、[フォルダ・パラメータ]を選択します。
- アナライザ・パーソナリティの[編集]ボタンをクリックします。
- [解析処理]タブを選択し、[プリプロセス済み出力]オプションをチェックします。詳細なソース・ファイルの位置情報をこのプリプロセス済み出力ファイルに取得するには、[プリプロセス済みリストにファイル名と行番号を含める]オプションをチェックします。
- [OK]をクリックして保存し、ダイアログを閉じます。
- ソース・ファイルを選択し、解析します。
- 解析したソース・ファイルを右クリックし、[プリプロセス済みソースを表示]を選択します。

|
|
質問18.
|
QAC/QAC++のパーソナリティ構成ファイルはバージョン間での上位互換性および下位互換性がありますか?
|
戻る
|
|
回答18.
|
製品のバージョン間で構成の互換性を維持させることに努めています。コンパイラ・パーソナリティおよびアナライザ・パーソナリティのオプションについては、通常は上位互換性および下位互換性が保証されますが、例外として、新規追加された構成エントリにはデフォルト値が想定され、そのエントリはGUIでの保存時にのみパーソナリティ・ファイルに記録されます。構成オプションが削除されることは滅多になく、パーソナリティの読み取りまたは使用の際に、無関係な設定はすべて無視されます。
メッセージ・パーソナリティについては、後のリリースで新しいメッセージが追加される点がさらに複雑です。既存のパーソナリティに選択したメッセージを手動でレビューすると共に、後の製品バージョンで追加される新しいメッセージもレビューするのが最も良い方法です。

|