コンテンツ
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.hとheaderB.hが展開されtest.cとともに解析されます。その結果、エラーなく解析は完了します。
直接の解析対象としなくとも、ヘッダファイルはソースファイルとともに解析されることに注意ください。
test.c、headerA.h、headerB.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++は、コンパイルはエラーなく完了するコードを解析することを前提とします。