覚書:doxygenで関数Call Treeを作る方法について
doxygenのXML出力のデータを使う方向で。
HTMLでは、参照元、参照先と表記されているところに該当するものが、XMLでは、referencesタグ、referencedbyタグに格納されている。
ただ、ここに格納されるものは、メソッドだけじゃなくメンバ変数も含まれている。
メソッドかどうかについて調べるには上記タグのrefid属性の値と、memberdefタグのid属性が同じところを探して、そこのkind属性が"function"かどうかでメソッドかわかる。(変数の時は"variable")
処理の順番としては、memberdefタグ内のdefinitionタグの値(メソッド名)をキーにしたハッシュテーブルを作って、referencesタグ、referencedbyタグの値を格納する。
んで、mainメソッドなり、指定されたメソッド名なりをもとにたどっていけばいいはず。
ただ、再帰呼び出しがあると無限ループしてしまうので、抽出メソッドリストを作って、同じ名称のメソッドを抽出していないか=無限ループしていないかチェックしないとあかん。
あと、関数ポインタはどのような表記になっているのか調べないと。
コメント