Создание дерева callview проекта C
Мне приходится работать с довольно малоизвестным проектом на языке Си, который содержит около 500 файлов и 250 тысяч строк почти без документации. Хуже того, половина проекта написана в сборке. Я знаю, это смешно...
В любом случае, чтобы получить общий обзор структуры кода, я хотел бы создать представление дерева вызовов немного лучше, чем то, что Doxygen может сделать с Graphviz.Поэтому я собираюсь написать свой собственный синтаксический анализатор и средство просмотра, используя ctags и cytoscape. Но перед этим хотелось бы узнать, доступны ли уже такие хорошие программы и можно ли их использовать с императивными языками.
Например, это то, что я ожидаю для кода ниже
Главная.c
void main() {
foo(1);
}
Фу.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)|--------------+
+----------+
1 ответ:
Я взглянуть на CodeQuery: https://ruben2020.github.io/codequery/
Он тянет в ctags и cscope базы данных и делает всевозможные причудливые вещи, включая (по-видимому) генерацию графов вызовов, хотя я никогда не пробовал эту конкретную функцию. Он также поддерживает намного больше, чем C.