C++ コードの XML ドキュメント

提供: Appmethod Topics
移動先: 案内検索

XML 形式のコンパイラ出力 への移動


旧世代の C++ コンパイラでは、C++ ソース ファイルおよびインクルードされるヘッダーに含まれている宣言を記述した XML ファイルを生成することができます。生成される情報は、コンパイラのシンボル テーブルの情報を表示するという点で、C++ のクラス エクスプローラに表示される情報と似ています。

この機能を有効にするには、[プロジェクト|オプション...|C++ コンパイラ|拡張を選択し、[その他のオプション]下で、下記のコマンドライン オプションのいずれかを[コンパイラに渡す追加オプション]オプションに追加します。

生成される XML ファイルの形式(スキーマ)については、「コンパイラからの XML 出力のグローバル宣言」で説明しています。

XML 出力用のコマンドライン オプション

-Zx - XML 出力を生成する

-Zx オプションを指定すると、C++ ソース ファイルおよびそこにインクルードされるヘッダーの処理中に検出されたシンボルの XML ファイルを生成するようにコンパイラに指示することができます。たとえば、次のようなソース ファイル(test.cpp)があった場合、-Zx オプションを指定すると、以下に示す test.xml という XML ファイルが生成されます。

test.cpp

class TBase {
  int id;
};

class TDerived : public TBase {
  char *name;
};

test.xml

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

次のサブオプションの任意の組み合わせを -Zx オプションに付け加えて、そのオプションの動作を変更することができます。

  • f: 基底型のメンバを省略
  • m: マクロを出力
  • p: ファイルおよび行の位置を出力

-Zxf - 上位クラスの情報を省略する

クラスの処理時にデフォルトの状態で XML を出力すると、コンパイラでは、そのクラスの基底型(上位クラス)のメンバに関する情報も生成します。f サブオプションを指定すると、基底型の情報を生成しないようにコンパイラに指示することができます。次の例では、サブオプション f を指定することにより、test.cpp ファイルから生成される .xml ファイルがどう変わるかを示します。

f サブオプションを指定しない場合の test.xml

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

f サブオプションを指定した場合の test.xml

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

-Zxp - 位置情報を生成する

p サブオプションを指定すると、各宣言のファイルと行の情報を記述する属性も出力するようにコンパイラに指示することができます。次の例では、p サブオプションを有効にした場合の test.xml を示します。

p サブオプションを指定した場合の test.xml

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public" file="test.cpp" line="1">
        <members>
            <field name="id" type="int" visibility="private" file="test.cpp" line="2" />
        </members>
    </class>
    <class name="TDerived" visibility="public" file="test.cpp" line="5">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" file="test.cpp" line="6" />
        </members>
    </class>
</file>

関連項目