C++のプロジェクトファイル渡されて、「仕様書無いケド改修シロ」だと??ふざくるな!!
…ってな訳で、クラス図だ。
クラス図って言っても、派生のクラス図じゃないぞ。そんな、閉じたドキュメント、導入タイミングじゃクソの役にもたたん。
欲しいのは関連クラス図。誰が総親で、ドイツがどのオブジェクトのオーナーでライフサイクルはどーなってるかとかの関連を把握すれば、ブラックボックスの特定とかできるジャン。つまり、解析範囲をかなり特定できる訳だ。
クラスにどんなメソッドがあって、「静的、動的、参照、ポインタ」どんな形でオブジェクトの生成をして、どんなメソッドを呼び出しているか、メソッド単位の呼び出し関連一覧を作る。
次に、呼び出し関連一覧を解析して、クラス単位の生成親子関係を調査し、図を描く時に親から数えてどれくらいの深さに在るか、親は誰かを一覧化する。
…あ゛~、概要説明が、これだけ複雑ってことは、スクリプトは解説しようがナイね。
ソース、ヘッダがあるフォルダでallc1.batを起動すれば、c1.tsv(メソッド単位の呼び出し関連一覧)とc3.tsv(クラス親子一覧)を生成する。
後は、両ファイルをExcelで開いてくれ。
※クラスの「静的、動的、参照、ポインタ」とメッソドの記載は、表上でオリジナルな接続詞でつなげてある。推測してくれ。
※親子のレベルは、トップは"0"だけど、子は最下層を"99"として、下位から発番している。
※c1.tsvは、不親切な表だが、メソッドのコードと表の該当行を見比べれば、きっと理解できるはず。
では、グッドラック!
…ってな訳で、クラス図だ。
クラス図って言っても、派生のクラス図じゃないぞ。そんな、閉じたドキュメント、導入タイミングじゃクソの役にもたたん。
欲しいのは関連クラス図。誰が総親で、ドイツがどのオブジェクトのオーナーでライフサイクルはどーなってるかとかの関連を把握すれば、ブラックボックスの特定とかできるジャン。つまり、解析範囲をかなり特定できる訳だ。
クラスにどんなメソッドがあって、「静的、動的、参照、ポインタ」どんな形でオブジェクトの生成をして、どんなメソッドを呼び出しているか、メソッド単位の呼び出し関連一覧を作る。
次に、呼び出し関連一覧を解析して、クラス単位の生成親子関係を調査し、図を描く時に親から数えてどれくらいの深さに在るか、親は誰かを一覧化する。
…あ゛~、概要説明が、これだけ複雑ってことは、スクリプトは解説しようがナイね。
ソース、ヘッダがあるフォルダでallc1.batを起動すれば、c1.tsv(メソッド単位の呼び出し関連一覧)とc3.tsv(クラス親子一覧)を生成する。
後は、両ファイルをExcelで開いてくれ。
※クラスの「静的、動的、参照、ポインタ」とメッソドの記載は、表上でオリジナルな接続詞でつなげてある。推測してくれ。
※親子のレベルは、トップは"0"だけど、子は最下層を"99"として、下位から発番している。
※c1.tsvは、不親切な表だが、メソッドのコードと表の該当行を見比べれば、きっと理解できるはず。
では、グッドラック!
AWKのつぼ
連想配列を多用して、ファイル、クラス、メソッドの辞書や逆引き辞書を作りこんでる。
このスクリプトのリバースする暇があるなら、本来のC++ソースの解析をしてくれ。
その方が不幸度合いが小さい。
あ、c1.awk中にMFC等の変数クラスを除外する除外文字列が4箇所ある。一目で判るぞ。
余分なクラスが出るときは、除外文字に追加してくれ。
連想配列を多用して、ファイル、クラス、メソッドの辞書や逆引き辞書を作りこんでる。
このスクリプトのリバースする暇があるなら、本来のC++ソースの解析をしてくれ。
その方が不幸度合いが小さい。
あ、c1.awk中にMFC等の変数クラスを除外する除外文字列が4箇所ある。一目で判るぞ。
余分なクラスが出るときは、除外文字に追加してくれ。
allc1.bat
allc1.awk
c1.bat
c1.awk
c3.awk
0 件のコメント:
コメントを投稿