FAQ

QA・C/QA・C++

アナライザ・パーソナリティに関する

ID.

Q. 特定の関数の呼び出し箇所を特定する「警告コール(-wc) 」オプションの使い方を教えてください。

A.


設定方法は次の通りです。

GUIから設定する場合:

  [アナライザ パーソナリティ] の [警告コール] タブで [追加] ボタンを押して、
  [指摘対象関数]=[指摘警告番号]という形式で設定します。
  例:
    func=3999

設定ファイルを直接編集する場合:
  -wc"[指摘対象関数]=[指摘警告番号]"という形式で設定します。
  例:
    -wc"func=3999"

なお、C++言語では関数をオーバーロード/オーバーライドできるように なっているので、同名の関数を複数個定義することができます。
同名の関数のうち一つを特定する必要がある場合は、 [指摘対象関数]を 「シンボリック・タイプ・コード」を用いた形式で 記述する必要があります。 (「シンボリック・タイプ・コード」については、ユーザーズ・ガイドを ご参照ください)

例えば、次のようなコードを解析する場合を考えます。void func(int);namespace NS { void func(int); class CLS { public: void func(int); };}int main(void) { NS::CLS obj; func(1); NS::func(1); obj.func(1); // ここに 3999 番の警告を出力する。 return 0;}複数個宣言された func 関数のうち、NS 名前空間内の CLS クラス内で 宣言されている func 関数が呼び出されている箇所だけに 3999 番の 警告を出力する場合は、次のように設定します。
  -wc"::NS::CLS::func(.,ni)=3999"

ただし、「シンボリック・タイプ・コード」を用いた形式で、 [指摘対象関数]を記述する のは容易ではないので、次の手順に従ってQA·C++から該当形式 の情報を抽出してください。
  • 対象となる関数の呼び出し文を含む簡単なサンプルソースを作ります。
    (ここでは TEST.cpp とします)
  • 作成した TEST.cpp をQA·C++で解析します。
  • 解析が正常終了すると TEST.cpp に対応する TEST.cpp.met という名称のファイルがQA·C++の 出力ディレクトリに作成されます。
  • TEST.cpp.met の中には、次のようなレコードが 出力されます。
    <R>C main ::test::TEST::func(.,ni) 17 -
    先頭が <R>C になっている行には、関数呼び出しに 関する情報が出力されています。(ユーザーズ・ガイド の「関係レコード」をご参照ください)
  • <R>C レコードの2番目は、呼び出されている関数の 情報を表し、これが「警告コール(-wc)」オプション に設定するべき情報になります。

  • 警告番号 3999 は「警告コール(-wc)」オプション用の汎用の 警告番号になります。 独自のメッセージを出力したい場合は、ユーザーズ・ガイドの「ユーザ・メッセージ・ファイル」を参照して、新しいメッセージを定義してください。

    << アナライザ・パーソナリティに関するに関するFAQ一覧へ戻る