機械制御/振動騒音
IR情報 会社情報

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

image_toyo_ss_img_qac_title_qac.gif.gif
Makefile/IDE連携ツール(wrapper)に関するFAQ image_toyo_ss_img_all_point_new.gif.gif  
image_toyo_ss_img_all_line_red.gif.gif
質問1. PRQAのMakefile/IDE連携ツールを使用して、必要な追加のコンパイラ・オプションをメイク・プロセスに渡すにはどうすればよいでしょうか? 戻る
回答1. Makefile/IDE連携ツールを使用すると、'CC'を再定義する際に、拡張コンパイル・コマンドを含むスクリプトを組み込むことができます。
image_toyo_common_spacer.gif.gif
例えば、コンパイル(CC)の再定義を、
CC=gcc -op1 -op2 -op3
とする必要がある場合、まずはこれらの追加パラメータを含めたシェル・スクリプトを作成しなければなりません。
image_toyo_common_spacer.gif.gif
例えば、my_gccというファイルに以下の内容が含まれているとします。
gcc -op1 -op2 -op3 $*
この場合、Makefile/IDE連携ツールを起動するための適切な呼び出し方法は、次のようになります。
make CC="wrapper.pl -wcf wrapper.cfg my_gcc"
image_toyo_common_spacer.gif.gif
質問2. Makefile/IDE連携ツールを実行して、メトリックスしきい値の解析や命名規則のチェックを取り入れることは可能ですか? QA C7.0J以上/QA C++2.3.1J以上 戻る
回答2. はい。可能です。詳しい方法は次の通りです。
image_toyo_common_spacer.gif.gif
Makefile/IDE連携ツールはメイクファイル内のコンパイル情報を解析設定として使用するので、GUIにあるようなアナライザ・パーソナリティはありません。アナライザ・パーソナリティからの設定を、構成ファイル内のANALYSER_FLAGSの設定に追加することができます。例えば、
image_toyo_common_spacer.gif.gif
ANALYSER_FLAGS=-thresh "STPTH>200" -thresh "STCYC>10"
image_toyo_common_spacer.gif.gif
とすると、推定静的パス数が200を超える関数に対してメッセージ4700が生成され、また、経路複雑度が10を超える関数に対してメッセージ4700が生成されます。スタイル・オプションやプリプロセス済みソース・オプションなどのその他の設定も、この行に指定することができます。あるいは、以下のように'-via'オプションを使用して、GUIにおいて作成されたアナライザ・パーソナリティを指定することも可能です。
image_toyo_common_spacer.gif.gif
ANALYSER_FLAGS=-via /home/bob/work/personalities/my_person/foo.p_a
image_toyo_common_spacer.gif.gif
命名規則チェッカーは、2次解析プログラム(製品インストール・ディレクトリ下のbinディレクトリ内のpal)を通して提供され、解析済みソースファイルごとに実行されます。実行には、適用する命名規則のルールを保持している命名規則ルール・ファイルの場所を指定する必要があります。1次解析の完了後に2次解析プロセスを実行するようMakefile/IDE連携ツールに指示するには、Makefile/IDE連携ツール構成ファイルのPOST_ANALYSIS設定を使用します。
構成設定は以下のようになるでしょう(QA Cの例)。
image_toyo_common_spacer.gif.gif
POST_ANALYSIS="$(QACBIN)/pal" QAC -nrf /home/bob/work/personalities/name_conv.nrf
image_toyo_common_spacer.gif.gif
Windows環境では、pal.exeがWindowsプログラムであるため、-nrfオプションに供給されるパスはWindowsのパスでなければなりません。実行モジュールを囲んでいる引用符に注意してください。パスにスペースが含まれる場合、これらが必要です。
image_toyo_common_spacer.gif.gif
質問3. Makefile/IDE連携ツールの解析出力を、メッセージ・ブラウザなどの表示/レポート作成コンポーネントで利用するにはどうすればよいでしょうか? 戻る
回答3. 例えば、以下のコマンドを使用してメッセージ・ブラウザを起動することができます。 詳しくは、ユーザガイド「第9章 コマンドラインでのQA C(QA C++)の実行」を参照してください。
image_toyo_common_spacer.gif.gif
$ viewer QAC -via c:/cygwin/home/bob/work/personalities/critical.p_s -list allmyfiles.lst
image_toyo_common_spacer.gif.gif
質問4. プロジェクトにCとC++が混在しているのですが、Makefile/IDE連携ツールはこれに対応可能ですか? 戻る
回答4. メイクファイルがCのファイルとC++のファイルとで異なるコンパイルを使用していれば、対応可能です。QACおよびQAC++のためのMakefile/IDE連携ツール構成ファイルとコンパイラ・パーソナリティをそれぞれ設定する必要があります。また、各ツール用に環境を設定する必要があります。
makeの実行コマンド例を下に示します。
image_toyo_common_spacer.gif.gif
$ 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++"
image_toyo_common_spacer.gif.gif
ただし、CのファイルにはCCとしてgccが使用され、C++のファイルにはCXXとしてg++が使用されていて、適切な構成ファイルが存在していると想定します。各ファイルタイプについて別々にメッセージ・ブラウザを開くことができるよう、QACとQAC++とで異なるファイルリスト名を使用しなければならないことに注意してください。
image_toyo_common_spacer.gif.gif
現時点ではソースが混在するプロジェクトにはCMAを実行することができません。PRLでは現在このことについて対応中です。
image_toyo_common_spacer.gif.gif
質問5. Makefile/IDE連携ツールを実行しようとすると、不適切なインタプリタであるとのメッセージが表示されます。どうすれば修正できるでしょうか? 戻る
回答5. Makefile/IDE連携ツールは、Perlインタプリタが/usr/bin/perlとしてインストールされているとみなします。他の場所にインストールされている場合は、wrapper.plの最初の行を変更して適切な場所を指し示す必要があります。
image_toyo_common_spacer.gif.gif
質問6. Makefile/IDE連携ツールによる個々のファイルの解析後に、プロジェクト全体に対しクロスモジュール解析(CMA)を実行させる方法はありますか? 戻る
回答6. CMAの実際的な結果を生成するためには、単一のリンク可能な要素に対してCMAを実行するべきです。プロジェクトが生成するのが単一の実行モジュールであれば、それがCMAの理想的な候補となります。
CMAは固有の解析結果(.errおよび.metファイル)を生成するので、これらの場所を指定する必要があります。メッセージ・ブラウザおよびレポートでは、これらのCMA出力ファイルを入力に使用するので、それらについても指定する必要があります。これらをコマンドラインで指定するのではなく、ファイルリストに追加することにより、プロセスごとに同じファイルが使用されるようにすることができます。このためのオプションは-cmafで、次の例のように、その後にその場所とルート名が続きます。
image_toyo_common_spacer.gif.gif
-cmaf /home/bob/work/project1/myproject
image_toyo_common_spacer.gif.gif
このリストを-listオプションで実行可能モジュールの'pal'に渡すことにより、CMAを実行することができます。
詳しくは、ユーザガイド「第9章 コマンドラインでのQA C(QA C++)の実行」を参照してください。
image_toyo_common_spacer.gif.gif
$ pal QAC -list allmyfiles.lst
image_toyo_common_spacer.gif.gif
質問7. Makefile/IDE連携ツールの実行に必要とされる最小限の設定は? 戻る
回答7. Makefile/IDE連携ツールは十数個の設定を含む、プレーン・テキストのテンプレート構成ファイルを伴いますが、そのうち3つのみが必須です。単純な構成ファイルの例を以下に示します(最初の3行が必須の設定)。
image_toyo_common_spacer.gif.gif
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
image_toyo_common_spacer.gif.gif
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つずつ作成されます。ファイルリストには始めに出力ディレクトリが記述され、その後各ファイルへのフルパスがリストされます。このファイルリストは、後の解析段階および表示段階で使用することができます。

image_toyo_common_spacer.gif.gif
質問8. ソース・ディレクトリの階層から成るメイクの構成においてMakefile/IDE連携ツールを実行するには? 戻る
回答8. Makefile/IDE連携ツールはメイクが下位に降りていくサブディレクトリごとにファイルリストを作成します。単に個々のファイルリストを連結すれば、マスター・ファイルリストが作成できます。
すべてのファイルをただリストするだけではなく、それらの出力ディレクトリも同時に指定する必要があります。以下のコマンドを最上位ディレクトリから使用して、マスター・ファイルリストを作成した後、そのリストを用いてメッセージ・ブラウザを開きます。
image_toyo_common_spacer.gif.gif
$ find . -name myfiles.lst | xargs cat >> allmyfiles.lst
$ viewer QAC -via /home/bob/work/personalities/critical.p_s -list allmyfiles.lst
image_toyo_common_spacer.gif.gif
質問9. コマンドラインで解析したコードについて、GUIからメトリックスおよびコードを視覚的に表示させるには? QAC6.2J以上/QAC++1.5J以上 戻る
回答9. プロジェクトがコマンドラインで解析された後に、さらにGUIを使用してメトリックスやコードの視覚化が可能です。ここで重要となるのは、ソースファイルとそれに対応する出力ファイルとを組にしたQAC/QAC++のGUIプロジェクトを作成することです。
image_toyo_common_spacer.gif.gif
プロジェクトの自動作成を使用するのが、これを行う最も簡単な方法です。[ファイル]->[プロジェクトの自動生成...]をクリックします。名前を入力し、プロジェクトの開始ディレクトリ(すなわち最上位のディレクトリ)を選択します。ここで、適切な出力ディレクトリ・オプションを選択します。
image_toyo_common_spacer.gif.gif
  • メイクファイルがオブジェクト・ファイル(そして解析出力ファイル)をソースと同じディレクトリに配置する場合は、それと同じディレクトリを出力ファイル・パスの開始ディレクトリとして選択し、[出力ファイル・パス内にソースツリー構造を複製]に対するデフォルト値を受け入れます。
  • メイクファイルがオブジェクト・ファイルを全く異なるディレクトリ構造に配置する場合は、このディレクトリを出力ファイル・パスとして選択します。メイクファイルがソースと同じディレクトリ構造を作成する場合には、[出力ファイル・パス内にソースツリー構造を複製]、[ソース構造に合わせる]をチェックします。
  • メイクファイルがオブジェクト・ファイルを各ソース・ディレクトリ内の別々のサブディレクトリに配置する場合は、[出力ファイル・パス内にソースツリー構造を複製]をチェックし、[ソースの各位置からのサブパス]を選択して、サブディレクトリの名前を入力します。 (QAC++2.5J以上)

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

PAGE TOP