FAQ
QA・C/QA・C++
ツール(操作)に関するに関するFAQ
Qシンタックスエラーが一定数を超えたとき、それ以上の解析をしないような設定は可能でしょうか? QA C全バージョン
FAQ ID: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では、アナライザ・パーソナリティの「解析処理」にある 「中止するまでのハードエラー最大出現回数」で設定することができます。
この設定のために途中で解析を中止すると、解析中に表示される 「解析状態画面」の「状態」に「解析警告」と表示されます。
Qインストール後の起動時にエラーが出力されました。どのような原因が考えられますか?
1. QACインストーラを「管理者として実行」から実行していない
QACインストーラを「管理者として実行」からインストールされていない可能性が考えられます。管理者としてログインしていても、インストーラのダブルクリックでは管理者としてインストールできていない場合がございます。インストーラの右クリックから「管理者として実行」を選択ください。
2. QAC および東陽ユーティリティを C:\Program Files などユーザアカウント制御機能が効くフォルダにインストールしている
Windowsのユーザアカウント制御機能(UAC)によって C:\Program Filesや C:\Program Files (x86) 以下に、QACをインストールされますと正しく動作しない場合がございます。
C:\PRQA というディレクトリを作成し、その配下にインストールいただくことをお勧めいたします。
上記をご対応いただいた後も問題が解決されない場合、お手数ですが、弊社テクニカルサポートまでお問い合わせください。
Q東陽ユーティリティ(PRQA Frameworkより前のバージョン用)の起動時にエラーが出力されました。どのように対処すれば良いですか?
Q「拡張クラスのC++(-ex C++)」オプションはどのようなことを行うためのオプションなのでしょうか? QA C全バージョン
FAQ ID:1
ただし、「参照演算子 &」がその意味も含めて正式に解釈される ようになるわけではないので注意してください。

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

なお、このオプションを使ったとしても、C++言語で記述されたコード が解析できるようになるわけではありません。QACでC++言語で記述 されたコードを解析すると、C++言語のキーワードや 文法(例えば class など) が記述されている箇所で文法エラーになります
QACとQAC++が対象とするコードについては、 「CとC++のコードが混在している場合、QACとQAC++のどちらで解析すればよいのでしょうか?」をご参照ください。
QQA Cは#machineという記述が認識できないようです。認識させる方法はありませんか? QA C全バージョン
FAQ ID:2
下記のコードで、#machineを使用している行に対して、メッセージ899やレベル9のエラ ーが出力されます。
また、#ifの結果が「偽」になっているようです。
#machineを認識させ、#ifの結果を「真」になるようにすることはできませんか?

解析オプション"-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のエラーを抑止することはできません。
QQACで解析を行うとき、大文字小文字の違いを認識しないように設定することはできますか? QA C全バージョン
FAQ ID:3
グローバルな変数や関数について、大文字小文字の違いを区別しないという設定がありますが、 インクルードファイルの参照において、同様の設定はできないのでしょうか?
コンパイラパーソナリティの拡張で、PCまたはANSIPCをチェックしてください。
すべて小文字として扱うことができます。
QQAC++で解析を行うとき、大文字小文字の違いを認識しないように設定することはできますか? QA C++ 全バージョン
FAQ ID:4
そこで以下の質問があります。
☆ QA C++にソースを通す際に、大文字・小文字のチェックをしない ようにするオプションはありませんか。
申し訳ございませんが、QAC++ ではサポートしていません。
QWindows版QAC/QAC++でメトリックス情報をCSVファイルへ保存するには? QA C8.1.1J以下/QA C++3.0J以下
FAQ ID:5
メトリックスブラウザからCSV形式で保存することができます。
QACやQAC++ のバージョンによって、若干操作方法が異なりますが、QAC7.0JやQAC++2.3.1Jの場合、 ブラウザ上の[ファイル]メニューから[データのエクスポート]を選択し、表示されたダイアログ上で保存する ファイル名とパスを指定します。
QGUIで作成したQAC/QAC++プロジェクトをコマンドラインで使うには?(Windows版) QA C8.1.1J以下/QA C++3.0J以下
FAQ ID:8
QAWツールを使用してください。
「保守ユーザ様向け情報」ページより、次の2つのファイルをダウンロードしてください。
- QAW (Windows用)
- QAW用参考バッチファイル (Windows用)
バッチファイルのご提供は Windows 用のみとなっておりますのでご了承ください。
QGUIで作成したパーソナリティをコマンドラインで使うには? QA C8.1.1J以下/QA C++3.0J以下
FAQ ID:7
-viaオプションを使用してください。
GUIで設定したオプションは、パーソナリティファイルと呼ばれるテキスト形式の ファイルに保存されます。
-viaオプションで、パーソナリティファイルを指定することで、GUIで設定したオプションを使用することができます。
パーソナリティファイルには、メッセージ(あるいはサブセット)、アナライザ、 コンパイラの3種類があり、それぞれ、p_s、p_a および p_c という拡張子がついています。(QAC4.2Jでは、この他にメトリックス・パーソナリティ(p_m)があります。 なお、QAC8.1.1J、QAC++3.0Jでは、この他にデータフロー・バーソナリティ(p_d)があります。)
GUIで解析した場合、インクルードパスの検索は、コンパイラ・パーソナリティより、 アナライザ・パーソナリティで設定したインクルードパスを先に検索します。
検索順を同じにするには、コンパイラ・パーソナリティより先にアナライザ・パーソナリティを -via する必要があります。
QコマンドラインからQACを実行した場合と、 GUIで実行した場合と結果的になにが違うのですか?
FAQ ID:9
Q1:GUIでプロジェクトを開いて、統計図等を表示させることはできますか?
Q2:またはGUIのQACを起動せずに、統計図等を見ることができますか?
解析の出力に関しては何も違いはありません。
コマンドラインで解析後、GUIメニューでソースコードがあるディレクトリに プロジェクトを作成し、プロジェクトのパラメータ QACOUTPATH(出力パス)をコマンドラインで 設定した QACOUTPATHと同じディレクトリにしますと、プロジェクトに登録されたソースコードは 既に解析済みファイルとなってます。 改めて GUIメニューから解析しなくても、統計図等グラフを表示することができます。
また、GUIのQACを起動せずに、統計図等を見ることができません。 グラフィカルな図を表示するには、必ず QACのメインウィンドウ(GUI)を表示しておく必要があります。 GUIからの操作とコマンドラインでの実行は、解析の表示に関しては何も違いはありません。GUIの解析メニューを選択(クリック)するということは、イコール、コマンド qacを起動することです。
違う点は、図の表示に関しては、GUIだけで利用することができるということです。
Qプロジェクトマクロやシステムマクロに文字列を渡すことはできますか?
FAQ ID:11

#include HEADER1

コンパイラ・パーソナリティやアナライザパーソナリティのマクロ設定で、"header.h"と指定しても、header.h だけになってしまいます。
"header.h" を設定することはできないのでしょうか?
QAC Version4.5.3J以降やQAC++1.5J以降の場合、次のように設定することで、文字列を渡すことができます。
_PRL_STRINGFY(x)=#x
MACRO=_PRL_STRINGFY(string)
(注:_PRL_STRINGFYは任意の文字列が使用できます)
この設定で、ソースコードの中に書かれたMACROは"string"に置換されます。
例
#include MACRO → #include "string"
char *p = MACRO ; → char *p = "string" ;
Versionに関係なく使用できるのは、「追加インクルード(あるいは強制インクルード)」で指定する方法です。
次の定義をした解析用のヘッダファイルを作成し、-FIオプションで指定します。
#define MACRO "string"
「追加インクルード(あるいは強制インクルード)」をGUIで設定するには、コンパイラパーソナリティ(以前のバージョンはアナライザパーソナリティ)で行います。
解析用のヘッダファイルの中には、文法的に許されるすべてのコードを記述することができます。
ビルトイン関数、ビルトインマクロ、あるいは、特殊なキーワード(レジスタ名など)を 宣言しておけば、より正確な解析結果を得ることができます。
QQA C/QA C++のGUIプロジェクトに設定されているパーソナリティ・ファイルの内容を参照・編集する方法と参照先パスを変更する方法を教えてください。(Windows版) QA C8.1.1J以下/QA C++3.0J以下
FAQ ID:12
パーソナリティ・ファイルを参照する場合は次の手順で操作します。
注意:
QA C/QA C++では「プロジェクト・フォルダ」ツリー内のフォルダ ごとに異なるパーソナリティ・ファイルの参照先パスを設定でき るようになっています。 このため、あるフォルダのパーソナリティ・ファイルの参照先パスを 変更したとしても、他のフォルダは変更の影響を受けません。
すべてのフォルダに同じパーソナリティ・ファイルを参照させる 場合は、次の手順で操作してください。
Qプリプロセス済みソース・コードを生成するには?
FAQ ID:17
- プリプロセス済みソースを生成したいソース・ファイルを含む、プロジェクト内のフォルダを右クリックし、[フォルダ・パラメータ]を選択します。
- アナライザ・パーソナリティの[編集]ボタンをクリックします。
- [解析処理]タブを選択し、[プリプロセス済み出力]オプションと[プリプロセス済みリストにファイル名と行番号を含める]オプションをチェックします。
- [OK]をクリックして保存し、ダイアログを閉じます。
- ソース・ファイルを選択し、解析します。
- 解析したソース・ファイルを右クリックし、[プリプロセス済みソースを表示]を選択します。
- 補足 -
アナライザパーソナリティは、テキストエディタから編集することもできます。
この場合は、アナライザパーソナリティへ以下2行を追記します。
-ppl+ : [プリプロセス済み出力オプション]
-ppf+ : [プリプロセス済みリストにファイル名と行番号を含める]
QQAC/QAC++のパーソナリティ構成ファイルはバージョン間での上位互換性および下位互換性がありますか? QA・C 8.1.1J 以下、QA・C++ 3.0J以下
FAQ ID:18
メッセージ・パーソナリティについては、後のリリースで新しいメッセージが追加される点がさらに複雑です。既存のパーソナリティに選択したメッセージを手動でレビューすると共に、後の製品バージョンで追加される新しいメッセージもレビューするのが最も良い方法です。
QQAC/QAC++でユーザ定義のルールを作成する方法はありますか?
FAQ ID:14
- アナライザ・パーソナリティにおいて警告対象関数(warncall)機能を使用することによる、使用禁止の関数呼び出しに対する警告
- 関数、ファイル、または(QAC++の)クラス・メトリックスに関するしきい値の超過に対する警告
- 2次解析アドオン・モジュールによる命名規則の一連のチェック
- 詳細なコード・レイアウトの一連のチェック(QAC++のみ)
QQACは潜在的なメモリリークを検出できますか?
FAQ ID:15
Qメニューバーの「構成」>「メッセージ・パーソナリティ...」(アナライザ・パーソナリティ/コンパイラ・パーソナリティ)にプロジェクトで使用しているパーソナリティ・ファイルが表示されません。(Windows版) QA C4.5.3J-7.0J/QA C++1.5J-2.3.1J
FAQ ID:13
「構成」>「メッセージ・パーソナリティ...」(アナライザ・ パーソナリティ/コンパイラ・パーソナリティ) で表示される ダイアログ上には、<QACインストールディレクトリ>\personalities (QAC4.5.3Jは <QACインストールディレクトリ>\person) 内のパーソナリティ・ファイルの一覧が表示されます。
プロジェクトで使用しているパーソナリティを表示・編集する方法は、 「QA C/QA C++のGUIプロジェクトに設定されているパーソナリティ・ファイルの内容を参照・編集する方法と参照先パスを変更する方法を教えてください。(Windows版)」 を参照してください。Qmakefileの -I/-DをどうやってQACやQAC++に反映させるのですか?
-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 オプションの説明を見てください。