2012-01-19 5 views
5

ansi cコードから「ファンクションダイアグラム」を作成できるツールを知っている人はいますか?ansi cコードからの自動作成ファンクションブロックダイアグラム

"関数図"とは、ファイル、関数、およびその関係の概要を表すグラフを意味します。私はそれを円グラフのようなものと想像しています。

例:次のコードがある場合:

//MyProgram.c 
int main(int argc, char** argv) 
{ 
    Foo(); 
    Bar(); 
    return 0; 
} 

//Slave.h 
void Foo(); 
void Bar(); 

をチャートには、以下の画像のようになります。

Function relation diagram http://i44.tinypic.com/503z7q.png

それは正式名称を持っていますか?依存関係図、おそらく?

私はDoxygenを少し見ました。しかし、それは明確に述べています: Doxygenには、C++クラスの継承ダイアグラムを生成する組み込みサポートがあります。 多くのUMLツールで同じことです。私にはクラスはありません。私のCファイルは近づくかもしれませんが。

+0

おそらく私はその目的をダイアグラムに追加する必要があります。コードプロジェクトの概要を提示することです。 「コード内で見た目のよい場所を見つける」に役立ちます。ファイルとライブラリのグループ化が重要です。そして関数関係は実際の内容を与えるでしょう。おそらくあなたは良い図を知っていますか?何かのファイル/ libに基づいて? – Illishar

+0

「依存グラフ」:http://msdn.microsoft.com/en-us/library/ff657798.aspx、実際にはかなり良く見えます。それは機能関係が欠けているだけです。 – Illishar

+0

doxygenは、継承ダイアグラムだけでなく、あらゆる種類のグラフを抽出することができます。 –

答えて

5

あなたが参照するものはCall Graphと呼ばれています。

それらを生成するためのツールのリストがあります:http://en.wikipedia.org/wiki/Call_graph#Software

+0

私が見たほとんどのコールグラフは、すべての関数を1つの大きなバケットに入れ、ツリーを生成します(ラッキーな場合)。プロファイリングをしているときにとても素敵です。この場合、コールグラフのシーケンスよりもファイル間の関係に関心があります。 UMLは私が考えるより良いヒットになるでしょう。しかし、おそらくあなたは特定のプログラムを念頭に置いていますか? – Illishar

+0

IDEのほとんどは、最近コールグラフをサポートしています。 – dicaprio

+0

私はリストを調べましたが、私は "ファイルコールグラフ"を作成することができません。それらはトップ・ノードとしてメイン・コール機能を持​​つ単なる木です。 (そして私は本当に木を探していません。) – Illishar

3

ありUnderstand Cと呼ばれるツールがあります例えばwww.scitools.comもはや無料ではありませんソフトウェアのカップルが。これは私があなたが探しているものを行うだろう、BOUML(これは無料のツールです)のような他のツールがあります。これ以外には、qiaoによって提供されるリストが参考になります。

+0

BOUMLはC++用です – Illishar

+0

scitoolには興味深いグラフがあります。彼らの依存グラフは近いです:http://www.scitools.com/images/features/dependenciesGraph.png。それでも関数関係は示されておらず、確かに概要は示されていません。これらを見ている人は誰でも逃げることができます。 (おそらく味と複雑さの問題です。) – Illishar

+0

本当ですが、それでもあなたが必要とするものはあります。コードを生成したり再生成したりしたくないと思います。 – dicaprio

0

私は私の考えの起源を見つけたと思う。コードを「接続された入出力を持つコンポーネント」として表示することは、LabVIEWのコンセプトです。 (私はこの種類のダイアグラムを探すための完全なナッタではありません)

しかし、私が知る限り、LabVIEWは私が望むことをしません。 LabVIEWは、機能を構築し、接続するためのものです。 hw/fwの人々によって広く使用されています。 (これも私のターゲットとするオーディエンスです)。コードをダイアグラムにリバースエンジニアリングすることはありません。

これらの図は実際には存在しません。組み込みプログラマ、アンシc、低レベル、hwなどの人々はそれらを愛するだろうと私には思われます。

関連する問題