ページ ツリー

 コンテンツ

QAC/QAC++は、「直接のコンパイル対象であるファイル」を「直接の解析対象」とします。
直接の解析対象のファイルは GUI で次のように確認することができます。

QAC 8.2.2/QAC++ 3.2.2(PRQA Framework 1.0.5)以降

直接の解析対象のファイルは"ソースファイル"配下に表示されます。

QAC 8.1.2/QAC++ 3.1以前

直接の解析対象のファイルは"ファイルのリスト"配下に表示されます。

注意

多くの場合、直接のコンパイル対象であるファイルはソースファイルであり、ヘッダファイルは直接のコンパイル対象ではないと思われます。直接のコンパイル対象ではないファイルを、QAC/QAC++で直接の解析対象とすると解析エラーの原因となります。

例)

以下の場合、test.cを直接の解析対象として解析すると、test.cの解析時に"#include"によってheaderA.hheaderB.hが展開されtest.cとともに解析されます。その結果、エラーなく解析は完了します。
直接の解析対象としなくとも、ヘッダファイルはソースファイルとともに解析されることに注意ください。

test.cheaderA.hheaderB.h それぞれを直接の解析対象として解析すると、headerB.hの解析時に本来は先に定義されているはずの"MACRO_A"の定義が不明であり、解析エラーとなります。


/*** headerA.h ***/
#define MACRO_A (10)

 

/*** headerB.h ***/
#define MACRO_B (MACRO_A + 1)


/*** test.c ***/
#include "headerA.h"
#include "headerB.h"

void func(void){
  int a;
  a = MACRO_B;
  return;
}

補足:

コンパイルも同様で、headerB.hを直接のコンパイル対象とすると、同じ理由でコンパイルエラーになると思われます。QAC/QAC++は、コンパイルはエラーなく完了するコードを解析することを前提とします。