2
我有一個相當不起眼的C++項目大約是500個文件和25萬線,幾乎沒有文檔工作的callview樹。更糟的是,項目的一半是用匯編編寫的。我知道,這是荒謬的...生成一個C項目
無論如何,爲了獲得代碼結構的一般概述,我想生成一個比Doxygen可以用Graphviz做得更好的調用樹視圖。
所以我即將編寫我自己的解析器和查看器,使用ctags的輸出和cytoscape。但在此之前,想知道這樣的好程序是否已經可用並且可以使用命令式語言。
例如,這就是我下面
的main.c
void main() {
foo(1);
}
foo.c的
void foo(int a) {
bar(a);
baz(a);
}
void baz(int a) {
bar(2);
}
輸出期望的代碼:
+------+ +----------+ +----------+ +----------+
|main.c| |foo.c | |foo.c | |bar.c |
|main()|---->|foo(int a)|--+-->|foo(int a)|------->|bar(int a)|
+------+ +----------+ | +----------+ +----------+
| ^
| +----------+ |
| |foo.c | |
+-->|baz(int a)|--------------+
+----------+
有一個POSIX命令['cflow'](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cflow.html) ,並且有一個GNU實現[ 'cflow'](http://www.gnu.org/software/cflow/)。這應該確定調用圖。一致地提出這個問題可能更成問題。必須有可用的工具來完成它。在你的圖中,爲什麼'foo()'被記錄爲遞歸的(調用'foo()')? – 2015-04-03 20:53:16
你有什麼操作系統?這與問題有關。 – 2015-04-04 18:29:45
@CyberSpock我會說Linux – nowox 2015-04-10 20:33:02