Doxygenの出力結果から構造体を展開させるプログラム
今の仕事の解析用にプログラムを作ってみた。
反応はあんまりなかった・・・。
どういうプログラムかと言うと・・・
- C言語の構造体のメンバのデータ型が構造体(共用体も)のとき、その構造体の中身を展開させて全体を見渡せるようにするもの
- 言語はExcel VBA
- 出力結果はExcel表としてシートに出力。シート名は構造体名。すでに同名シートがある場合は削除してから出力(削除確認ダイアログでます)
- DoxygenのXML出力結果をもとに構築します
- XML出力結果のディレクトリ(index.xmlのあるフォルダ)を指定して、「XML解析」ボタンを押す→構造体名コンボボックスから構造体名を選択、または直接入力して「構造体解析」ボタンを押下。
- 出力結果は、メンバ名(変数)を階層的に出力、データ型、概要説明の順。
■ファイルダウンロード
・プログラム本体(excelファイル):doxygen_struct.xls
・テスト対象(C言語):test1.zip
・Doxygen設定ファイル:Doxygen
Excel VBAなので、Excelファイルを開いたらセキュリティの警告で「マクロとActiveXを有効にする」を選択してください。
※:2011/11/29:バグフィックスとちょっとエンハンス(全構造体展開)を出来るように修正した。
■備忘録
Doxygenの出力のうち、概略説明タグ<briefdescription>に出力させるには、
(1)ソースには以下のように書く。ポイントはコメントの開始を "/**"で始めること+説明の前は"brief"を置く。
breifの前に"<"を置くことにより、コメント前のメンバについての説明と言うことになる。
#ifndef TEST_STRUCT_H
#define TEST_STRUCT_H
#include "test_define.h"
typedef unsigned long UINT32; /**< breif Datatype UINT32(unsigned long). */
/** breif Union Test2. */
typedef union uTEST2_ {
unsigned long ulmember1; /**<breif uTest2 Member ulmember1. */
unsigned int uimember2; /**<breif uTest2 Member uimember2. */
unsigned char ucmember3[5]; /**<breif uTest2 Member ucmember3. */
} uTest2;
/** breif Struct Test1_1. */
typedef struct stTEST1_1_ {
UINT32 ui32test1; /**<breif test1_1 Member test1. */
UINT8 ui8Padding[4]; /**<breif test1_1 Member Padding. */
eTEST01 eTest01; /**<breif test1_1 Member enum Test01. */
} stTest1_1;
/** breif Struct Test1. */
typedef struct stTEST1_ {
uTest2 utest2; /**<breif test1 Member test2. */
UINT32 ui32test1; /**<breif test1 Member test1. */
UINT8 ui8Padding[4]; /**<breif test1 Member Padding. */
stTest1_1 sttest1_1; /**<breif test1 Member stTest1_1. */
struct stTEST1_ *pNext; /**<breif test1 Member pNext - Next Pointer. */
} stTest1;
#endif /* TEST_STRUCT_H */
(2)Doxygenの設定は、BRIEF_MEMBER_DESC、JAVADOC_AUTOBRIEF、GENERATE_XML、XML_OUTPUTに"YES"を設定する。
« MicrosoftUpdateが失敗し続けたけど、解決できたさ | トップページ | 株:現物売り約定(ヤフー) »
« MicrosoftUpdateが失敗し続けたけど、解決できたさ | トップページ | 株:現物売り約定(ヤフー) »
コメント