FAQ

QA・C/QA・C++

Makefile/IDE連携ツール(wrapper)に関するに関するFAQ

Qコマンドラインで解析したコードについて、GUIからメトリックスおよびコードを視覚的に表示させるには? QAC6.2J以上/QAC++1.5J以上

FAQ ID:9

A
プロジェクトがコマンドラインで解析された後に、さらにGUIを使用してメトリックスやコードの視覚化が可能です。ここで重要となるのは、ソースファイルとそれに対応する出力ファイルとを組にしたQAC/QAC++のGUIプロジェクトを作成することです。

プロジェクトの自動作成を使用するのが、これを行う最も簡単な方法です。[ファイル]->[プロジェクトの自動生成...]をクリックします。名前 を入力し、プロジェクトの開始ディレクトリ(すなわち最上位のディレクトリ)を選択します。ここで、適切な出力ディレクトリ・オプションを選択します。
  • メイクファイルがオブジェクト・ファイル(そして解析出力ファイル)をソースと同じディレクトリに配置する場合は、それと同じディレクトリを 出力ファイル・パスの開始ディレクトリとして選択し、[出力ファイル・パス内にソースツリー構造を複製]に対するデフォルト値を受け入れます。
  • メイクファイルがオブジェクト・ファイルを全く異なるディレクトリ構造に配置する場合は、このディレクトリを出力ファイル・パスとして選択し ます。メイクファイルがソースと同じディレクトリ構造を作成する場合には、[出力ファイル・パス内にソースツリー構造を複製]、[ソース構造に合わせる] をチェックします。
  • メイクファイルがオブジェクト・ファイルを各ソース・ディレクトリ内の別々のサブディレクトリに配置する場合は、[出力ファイル・パス内にソースツリー構造を複製]をチェックし、[ソースの各位置からのサブパス]を選択して、サブディレクトリの名前を入力します。 (QAC++2.5J以上)

適切なメッセージ・パーソナリティを選択してください。解析の実行にはGUIを使用しないので、アナライザ・パーソナリティおよびコンパイラ・パーソナリティは関係ありません。OKをクリックして、プロジェクトを生成します。

プロジェクトが作成されると、すべてのファイルが解析済みであるように表示されるはずです(存在するがプロジェクトの一部としてビルドされていない、テス ト・ファイルなどのファイルを削除しなければならない場合があります)。CMAおよび各種レポートはGUIから実行できますが、アナライザ・パーソナリ ティの設定に誤りが生じるため、プロジェクトをGUIから解析しないことが重要です。通常の方法でGUIを使用すれば、メトリックスおよびコードの視覚化 ツールが表示されます。

回答を閉じる

Qソース・ディレクトリの階層から成るメイクの構成においてMakefile/IDE連携ツールを実行するには?

FAQ ID:8

A
Makefile/IDE連携ツールはメイクが下位に降りていくサブディレクトリごとにファイルリストを作成します。単に個々のファイルリストを連結すれば、マスター・ファイルリストが作成できます。
すべてのファイルをただリストするだけではなく、それらの出力ディレクトリも同時に指定する必要があります。以下のコマンドを最上位ディレクトリから使用して、マスター・ファイルリストを作成した後、そのリストを用いてメッセージ・ブラウザを開きます。

$ find . -name myfiles.lst | xargs cat >> allmyfiles.lst
$ viewer QAC -via /home/bob/work/personalities/critical.p_s -list allmyfiles.lst

回答を閉じる

QMakefile/IDE連携ツールの実行に必要とされる最小限の設定は?

FAQ ID:7

A
Makefile/IDE連携ツールは十数個の設定を含む、プレーン・テキストのテンプレート構成ファイルを伴いますが、そのうち3つのみが必須です。単純な構成ファイルの例を以下に示します(最初の3行が必須の設定)。

COMPILER_SETTINGS_FILE=/home/bob/work/personalities/gcc_v3.0_qac4.5.p_c.p_c
ANALYSER=QAC
ANALYSER_BASE=$(QACPATH)
DEBUG=1
STOP_ON_FAIL=1
FILELIST=myfiles.lst

COMPILER_SETTINGS_FILEは、QAC/QAC++に同梱されていたり、GUIまたはコンパイラ・パーソナリティ・ジェネレータから作成されたりするコンパイラ・パーソナリティです。
ANALYSERは、実行しているのがQACかQAC++かをMakefile/IDE連携ツールに伝えます。
ANALYSER_BASEは、QACまたはQAC++のインストール場所をMakefile/IDE連携ツールに伝えます。ここではパスを指定すること も可能ですが、QAC/QAC++のコマンドライン環境の構成時に設定される環境変数を使用した方が簡単です。これを行うには、UNIX環境で は.profileファイルにsourceを実行するか、Windows環境ではQAC{PP}CONF.BATを(製品インストールのbinディレクト リにおいて)実行します。
DEBUGはMakefile/IDE連携ツールに、様々な設定やstdoutに対する処理内容を出力するよう指示します(LOGFILEオプションによってこの内容をファイルに送ることができます)。
STOP_ON_FAILは、解析が失敗した場合にメイク・プロセスを停止させます(それ以外の場合、通常はコンパイルが失敗した場合にのみ停止させます)。これは、構成が正しいことをチェックするうえで役立ちます。
FILELISTはMakefile/IDE連携ツールに、解析済みファイルのリストを作成するように指示します。解析済みソースファイルがあるディレク トリごとに、ファイルリストが1つずつ作成されます。ファイルリストには始めに出力ディレクトリが記述され、その後各ファイルへのフルパスがリストされま す。このファイルリストは、後の解析段階および表示段階で使用することができます。
 

回答を閉じる

QMakefile/IDE連携ツールによる個々のファイルの解析後に、プロジェクト全体に対しクロスモジュール解析(CMA)を実行させる方法はありますか?

FAQ ID:6

A
CMAの実際的な結果を生成するためには、単一のリンク可能な要素に対してCMAを実行するべきです。プロジェクトが生成するのが単一の実行モジュールであれば、それがCMAの理想的な候補となります。
CMAは固有の解析結果(.errおよび.metファイル)を生成するので、これらの場所を指定する必要があります。メッセージ・ブラウザおよびレポート では、これらのCMA出力ファイルを入力に使用するので、それらについても指定する必要があります。これらをコマンドラインで指定するのではなく、ファイ ルリストに追加することにより、プロセスごとに同じファイルが使用されるようにすることができます。このためのオプションは-cmafで、次の例のよう に、その後にその場所とルート名が続きます。

-cmaf /home/bob/work/project1/myproject

このリストを-listオプションで実行可能モジュールの'pal'に渡すことにより、CMAを実行することができます。
詳しくは、ユーザガイド「第9章 コマンドラインでのQA C(QA C++)の実行」を参照してください。

$ pal QAC -list allmyfiles.lst

回答を閉じる

QMakefile/IDE連携ツールを実行しようとすると、不適切なインタプリタであるとのメッセージが表示されます。どうすれば修正できるでしょうか?

FAQ ID:5

A
Makefile/IDE連携ツールは、Perlインタプリタが/usr/bin/perlとしてインストールされているとみなします。他の場所にインストールされている場合は、wrapper.plの最初の行を変更して適切な場所を指し示す必要があります。

回答を閉じる

QプロジェクトにCとC++が混在しているのですが、Makefile/IDE連携ツールはこれに対応可能ですか?

FAQ ID:4

A
メイクファイルがCのファイルとC++のファイルとで異なるコンパイルを使用していれば、対応可能です。QACおよびQAC++のための Makefile/IDE連携ツール構成ファイルとコンパイラ・パーソナリティをそれぞれ設定する必要があります。また、各ツール用に環境を設定する必要 があります。
makeの実行コマンド例を下に示します。

$ make CC="wrapper.pl -wcf /home/bob/work/personalities/QAC_wrapper.cfg gcc" CXX="wrapper.pl -wcf /home/bob/work/personalities/QACPP_wrapper.cfg g++"

ただし、CのファイルにはCCとしてgccが使用され、C++のファイルにはCXXとしてg++が使用されていて、適切な構成ファイルが存在していると想 定します。各ファイルタイプについて別々にメッセージ・ブラウザを開くことができるよう、QACとQAC++とで異なるファイルリスト名を使用しなければ ならないことに注意してください。

現時点ではソースが混在するプロジェクトにはCMAを実行することができません。PRLでは現在このことについて対応中です。

回答を閉じる

QMakefile/IDE連携ツールの解析出力を、メッセージ・ブラウザなどの表示/レポート作成コンポーネントで利用するにはどうすればよいでしょうか?

FAQ ID:3

A
例えば、以下のコマンドを使用してメッセージ・ブラウザを起動することができます。 詳しくは、ユーザガイド「第9章 コマンドラインでのQA C(QA C++)の実行」を参照してください。

$ viewer QAC -via c:/cygwin/home/bob/work/personalities/critical.p_s -list allmyfiles.lst

回答を閉じる

QMakefile/IDE連携ツールを実行して、メトリックスしきい値の解析や命名規則のチェックを取り入れることは可能ですか? QA C7.0J以上/QA C++2.3.1J以上

FAQ ID:2

A
はい。可能です。詳しい方法は次の通りです。

Makefile/IDE連携ツールはメイクファイル内のコンパイル情報を解析設定として使用するので、GUIにあるようなアナライザ・パーソナリティは ありません。アナライザ・パーソナリティからの設定を、構成ファイル内のANALYSER_FLAGSの設定に追加することができます。例えば、

ANALYSER_FLAGS=-thresh "STPTH>200" -thresh "STCYC>10"

とすると、推定静的パス数が200を超える関数に対してメッセージ4700が生成され、また、経路複雑度が10を超える関数に対してメッセージ4700が 生成されます。スタイル・オプションやプリプロセス済みソース・オプションなどのその他の設定も、この行に指定することができます。あるいは、以下のよう に'-via'オプションを使用して、GUIにおいて作成されたアナライザ・パーソナリティを指定することも可能です。

ANALYSER_FLAGS=-via /home/bob/work/personalities/my_person/foo.p_a

命名規則チェッカーは、2次解析プログラム(製品インストール・ディレクトリ下のbinディレクトリ内のpal)を通して提供され、解析済みソースファイ ルごとに実行されます。実行には、適用する命名規則のルールを保持している命名規則ルール・ファイルの場所を指定する必要があります。1次解析の完了後に 2次解析プロセスを実行するようMakefile/IDE連携ツールに指示するには、Makefile/IDE連携ツール構成ファイルの POST_ANALYSIS設定を使用します。
構成設定は以下のようになるでしょう(QA Cの例)。

POST_ANALYSIS="$(QACBIN)/pal" QAC -nrf /home/bob/work/personalities/name_conv.nrf

Windows環境では、pal.exeがWindowsプログラムであるため、-nrfオプションに供給されるパスはWindowsのパスでなければなりません。実行モジュールを囲んでいる引用符に注意してください。パスにスペースが含まれる場合、これらが必要です。

回答を閉じる

QPRQAのMakefile/IDE連携ツールを使用して、必要な追加のコンパイラ・オプションをメイク・プロセスに渡すにはどうすればよいでしょうか?

FAQ ID:1

A
Makefile/IDE連携ツールを使用すると、'CC'を再定義する際に、拡張コンパイル・コマンドを含むスクリプトを組み込むことができます。

例えば、コンパイル(CC)の再定義を、
CC=gcc -op1 -op2 -op3
とする必要がある場合、まずはこれらの追加パラメータを含めたシェル・スクリプトを作成しなければなりません。

例えば、my_gccというファイルに以下の内容が含まれているとします。
gcc -op1 -op2 -op3 $*
この場合、Makefile/IDE連携ツールを起動するための適切な呼び出し方法は、次のようになります。
make CC="wrapper.pl -wcf wrapper.cfg my_gcc"

回答を閉じる