ソースコードからドキュメント生成するツールとしていにしえの時代から有名な
doxygen には xml 出力があるので、静的解析ツールの補助として
いろいろと活用ができそう。
使い方
で生成された Doxyfile ないしすでにある Doxyfile において
GENERATE_XML
を YES
にして、
ドキュメントをつくるように doxygen を実行すると xml が出力される。
html 出力などほかの出力も有効にしているならば、一緒に出力される。
具体例
構造体 struct _Foo
にどんなメンバがあるかを構造分析したい:
doxygen の実行
構造体 struct _Foo
の構造を見るには struct__Foo.xml
を見るという風な単純な構造となっている:
memberdef
要素の中身を探していけば良い。他のファイルにその定義がある場合は ref
要素
があるようなので再帰的に処理を行えば探せる。
というわけで、さくっと doxygen の xml 出力を利用して、C言語構造体の構造を JSON で吐き出すスクリプトを書いてみた。
100 行未満で書けるのだから doxygen の xml 出力は強力である。
列挙体が扱えないことが残念なことこの上ない。
参考文献