FAQ

QA・C/QA・C++

ツール(操作)に関するに関するFAQ

Qシンタックスエラーが一定数を超えたとき、それ以上の解析をしないような設定は可能でしょうか? QA C全バージョン

FAQ ID:6

Q

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

A

解析オプションの -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インストール後の起動時にエラーが出力されました。どのような原因が考えられますか?

A
2つの原因が考えられます。

1. QACインストーラを「管理者として実行」から実行していない
QACインストーラを「管理者として実行」からインストールされていない可能性が考えられます。管理者としてログインしていても、インストーラのダブルクリックでは管理者としてインストールできていない場合がございます。インストーラの右クリックから「管理者として実行」を選択ください。

2. QAC および東陽ユーティリティを C:\Program Files などユーザアカウント制御機能が効くフォルダにインストールしている
Windowsのユーザアカウント制御機能(UAC)によって C:\Program Filesや C:\Program Files (x86) 以下に、QACをインストールされますと正しく動作しない場合がございます。
C:\PRQA というディレクトリを作成し、その配下にインストールいただくことをお勧めいたします。

上記をご対応いただいた後も問題が解決されない場合、お手数ですが、弊社テクニカルサポートまでお問い合わせください。

回答を閉じる

Q東陽ユーティリティ(PRQA Frameworkより前のバージョン用)の起動時にエラーが出力されました。どのように対処すれば良いですか?

A
エラー原因を調査させていただくため、以下の情報を弊社テクニカルサポートまでお送りいただけますでしょうか。

- 東陽ユーティリティ実行時にコマンドプロンプトに表示されるメッセージ
- ログファイル
 go_qa_cmd.log, go_qa_cnf.log など拡張子が .log のファイル
- 設定ファイル
 settings.via およびそこから -via で参照しているファイル

回答を閉じる

Q「拡張クラスのC++(-ex C++)」オプションはどのようなことを行うためのオプションなのでしょうか? QA C全バージョン

FAQ ID:1

A
Cコンパイラの中には、C++言語の機能の1つである「参照演算子 &」 の使用を許しているものがあります。お使いのCコンパイラが 「参照演算子 &」の使用を許している場合は 、-ex C++オプションを設定する必要があります。
ただし、「参照演算子 &」がその意味も含めて正式に解釈される ようになるわけではないので注意してください。

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

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

回答を閉じる

QQA Cは#machineという記述が認識できないようです。認識させる方法はありませんか? QA C全バージョン

FAQ ID:2

Q

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

#machine i386 #if #machine(i386) ・・・ #else ・・・ #endif
A
解析オプション"-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のエラーを抑止することはできません。
 

回答を閉じる

QQACで解析を行うとき、大文字小文字の違いを認識しないように設定することはできますか? QA C全バージョン

FAQ ID:3

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

コンパイラパーソナリティの拡張で、PCまたはANSIPCをチェックしてください。
すべて小文字として扱うことができます。

回答を閉じる

QQAC++で解析を行うとき、大文字小文字の違いを認識しないように設定することはできますか? QA C++ 全バージョン

FAQ ID:4

Q
Windows上ソフト開発を行っており、そのソースを UNIX(またはLinux)版の QA C++ で解析しようとしています。
そこで以下の質問があります。

☆ QA C++にソースを通す際に、大文字・小文字のチェックをしない ようにするオプションはありませんか。

A

申し訳ございませんが、QAC++ ではサポートしていません。

回答を閉じる

QWindows版QAC/QAC++でメトリックス情報をCSVファイルへ保存するには? QA C8.1.1J以下/QA C++3.0J以下

FAQ ID:5

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

メトリックスブラウザからCSV形式で保存することができます。

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

回答を閉じる

QGUIで作成したQAC/QAC++プロジェクトをコマンドラインで使うには?(Windows版) QA C8.1.1J以下/QA C++3.0J以下

FAQ ID:8

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

QAWツールを使用してください。

「保守ユーザ様向け情報」ページより、次の2つのファイルをダウンロードしてください。

  • QAW (Windows用)
  • QAW用参考バッチファイル (Windows用)
「QAW用参考バッチファイル」内のReadme.pdf にインストール方法 並びに使用方法が記述されています。

バッチファイルのご提供は Windows 用のみとなっておりますのでご了承ください。

回答を閉じる

QGUIで作成したパーソナリティをコマンドラインで使うには? QA C8.1.1J以下/QA C++3.0J以下

FAQ ID:7

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

-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

Q
コマンドラインで実行した結果に対して、

Q1:GUIでプロジェクトを開いて、統計図等を表示させることはできますか?

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

A

解析の出力に関しては何も違いはありません。

コマンドラインで解析後、GUIメニューでソースコードがあるディレクトリに プロジェクトを作成し、プロジェクトのパラメータ QACOUTPATH(出力パス)をコマンドラインで 設定した QACOUTPATHと同じディレクトリにしますと、プロジェクトに登録されたソースコードは 既に解析済みファイルとなってます。 改めて GUIメニューから解析しなくても、統計図等グラフを表示することができます。

また、GUIのQACを起動せずに、統計図等を見ることができません。 グラフィカルな図を表示するには、必ず QACのメインウィンドウ(GUI)を表示しておく必要があります。 GUIからの操作とコマンドラインでの実行は、解析の表示に関しては何も違いはありません。GUIの解析メニューを選択(クリック)するということは、イコール、コマンド qacを起動することです。

違う点は、図の表示に関しては、GUIだけで利用することができるということです。

回答を閉じる

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

FAQ ID:11

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

#include HEADER1

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

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

A

パーソナリティ・ファイルを参照する場合は次の手順で操作します。

  • QA C/QA C++のGUIプロジェクトを開きます。
  • 画面左部の「プロジェクト・フォルダ」ツリー内で、フォルダ名をダブルクリックします。
  • 表示された「フォルダ・パラメータ」内に、フォルダに設定されている3種類のパーソナリティの絶対パスが表示されます。
  • 各パーソナリティの右側に表示されているアイコンをクリックすると、パーソナリティ・ファイルの内容を参照・編集することができます。
  • 各パーソナリティの右側に表示されている[ブラウズ...]ボタンをクリックすると、パーソナリティファイルの参照先パスを変更することができます。(入力フィールドの値を直接変更することもできます。)
  • 注意:
      QA C/QA C++では「プロジェクト・フォルダ」ツリー内のフォルダ ごとに異なるパーソナリティ・ファイルの参照先パスを設定でき るようになっています。 このため、あるフォルダのパーソナリティ・ファイルの参照先パスを 変更したとしても、他のフォルダは変更の影響を受けません。
    すべてのフォルダに同じパーソナリティ・ファイルを参照させる 場合は、次の手順で操作してください。

  • 上記の手順に従って最上位のフォルダのパーソナリティ・ファイルの参照先を変更します。
  • 最上位のフォルダ上で右クリックし、ポップアップメニューを開きます。
  • [変更をサブフォルダへ反映]を選択し、参照先パスを揃えたいパーソナリティ名、もしくは「全パーソナリティ」を選択します。
  • 回答を閉じる

    Qプリプロセス済みソース・コードを生成するには?

    FAQ ID:17

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

    - 補足 -
    アナライザパーソナリティは、テキストエディタから編集することもできます。
    この場合は、アナライザパーソナリティへ以下2行を追記します。

    -ppl+ : [プリプロセス済み出力オプション]
    -ppf+ : [プリプロセス済みリストにファイル名と行番号を含める]

    回答を閉じる

    QQAC/QAC++のパーソナリティ構成ファイルはバージョン間での上位互換性および下位互換性がありますか? QA・C 8.1.1J 以下、QA・C++ 3.0J以下

    FAQ ID:18

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

    回答を閉じる

    QQAC/QAC++でユーザ定義のルールを作成する方法はありますか?

    FAQ ID:14

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

    回答を閉じる

    QQACは潜在的なメモリリークを検出できますか?

    FAQ ID:15

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

    回答を閉じる

    Qメニューバーの「構成」>「メッセージ・パーソナリティ...」(アナライザ・パーソナリティ/コンパイラ・パーソナリティ)にプロジェクトで使用しているパーソナリティ・ファイルが表示されません。(Windows版) QA C4.5.3J-7.0J/QA C++1.5J-2.3.1J

    FAQ ID:13

    A

    「構成」>「メッセージ・パーソナリティ...」(アナライザ・ パーソナリティ/コンパイラ・パーソナリティ) で表示される ダイアログ上には、<QACインストールディレクトリ>\personalities (QAC4.5.3Jは <QACインストールディレクトリ>\person) 内のパーソナリティ・ファイルの一覧が表示されます。

    プロジェクトで使用しているパーソナリティを表示・編集する方法は、 「QA C/QA C++のGUIプロジェクトに設定されているパーソナリティ・ファイルの内容を参照・編集する方法と参照先パスを変更する方法を教えてください。(Windows版)」 を参照してください。

    回答を閉じる

    Qmakefileの -I/-DをどうやってQACやQAC++に反映させるのですか?

    A
    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 オプションの説明を見てください。

    回答を閉じる