生成C项目的callview树
Generate callview tree of a C project
我必须处理一个相当晦涩的 C 项目,该项目大约有 500 个文件和 25 万行,几乎没有文档。更糟糕的是,项目的一半是用汇编语言编写的。我知道,这很荒谬...
无论如何,为了大致了解代码结构,我想生成一个比 Doxygen 用 Graphviz 做的更好的调用树视图。
所以我准备使用 ctags's output and 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)|--------------+
+----------+
我会看一下 CodeQuery:https://ruben2020.github.io/codequery/
它引入 ctags 和 cscope 数据库并执行各种奇特的操作,包括(显然)生成调用图,尽管我从未尝试过该特定功能。它也比 C 支持更多。
我必须处理一个相当晦涩的 C 项目,该项目大约有 500 个文件和 25 万行,几乎没有文档。更糟糕的是,项目的一半是用汇编语言编写的。我知道,这很荒谬...
无论如何,为了大致了解代码结构,我想生成一个比 Doxygen 用 Graphviz 做的更好的调用树视图。
所以我准备使用 ctags's output and 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)|--------------+
+----------+
我会看一下 CodeQuery:https://ruben2020.github.io/codequery/
它引入 ctags 和 cscope 数据库并执行各种奇特的操作,包括(显然)生成调用图,尽管我从未尝试过该特定功能。它也比 C 支持更多。