ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS
【質問】
ヘッダファイルに#defineシンボルとして定義した数値や変数名、構造体メンバーなどを、テストCSVに使用することはできますか?
【回答】
CasePlayer2と連携して使用する場合には使用することができます。#defineシンボル情報はコンパイラのプリプロセッサによって処理されるため、コンパイル時にコードに埋め込まれてしまい、オブジェクトファイルにシンボル情報としては入りません。#defineの情報はCasePlayer2の解析結果の#define一覧の情報として、カバレッジマスターに持ち込まれます。カバレッジマスターのプロジェクトフォルダに生成される"Cp2Define.dat"ファイルがそれです。たとえば
#define FALSE 0
#define TRUE 1
というソースに対しては
13,"FALSE","0"
13,"TRUE","1"
というテキストファイルが作成されます。これによってWinAMSで、テストCSVに「FALSE」「TRUE」というシンボルを使えるようになります。このためには、CasePlayer2で以下の設定が行われていることを確認してください。
1.CasePlayer2の「設定」タブの「仕様書生成」のダイアログを表示します
2.詳細設定の項目のうち、以下の設定がONになっていることを確認する
・詳細解析を行う
・#define一覧(ブラウザ情報)を生成する
・winAMS用プログラム解析情報を生成する
"Cp2Define.dat"は、WinAMSを起動したタイミングで、連携されたCasePlayer2から情報を読み取って生成/更新されます。したがってCasePlayer2で「全仕様書生成」を実行した後にWinAMSを再起動する必要がありますのでご注意ください。
カバレッジマスターで利用できる#define定義には以下の条件があります。
<定義可能な例>
単純な数値定義
#define ABC (100) /* 'ABC'をテストデータの代わりに記述できます */
単純なグローバル変数
#define G_VAR1 g_var1 /* g_var1はグローバル変数 */
単純なグローバル変数の配列要素
#define G_A0 g_ary[0] /* g_aryは配列型のグローバル変数 */
単純なグローバル変数のメンバやビットフィールド
#define BIT1 g_st.bit1 /* g_stはビットフィールドのグローバル変数 */
#define MEMM g_ptr- >m /* g_ptrは構造体ポインタ型のグローバル変数 */
型キャスト付のI/Oアドレス
#define B_LED (*(volatile unsigned short*) 0x00080000) /* 0x00080000#U2#2 */
#define R_LED ((volatile unsigned short*) 0x00080020) /* 0x00080020#U2#2 */
レジスタマップ
#define P1 (*(volatile struct p1*) 0x00080100)
<定義ができない例>
演算を含む数値定義
#define ABC (100*2) /* 定義に演算が含まれる物は使用できません */
ファイル内スタティック変数
#define S_VAR1 s_var1 /* s_var1はファイル内スタティック変数 */
関数・マクロ関数
#define MFUNC(a) func1(a)
型キャスト付のグローバル変数
#define G_CPTR (char*)g_ptr
関数内ローカルなシンボルを使用しているもの
例えば、関数内static変数や、関数内ローカルな構造体のレジスタマップなど。