Задать вопрос

Нужен визуализатор си-кода, который строит граф вызовов функций?

Есть проект из 30 cpp файлов, в каждом файле штук по 20 функций. Желаю быстро и наглядно увидеть, например для каждого файла — какие в нём функции и кто из них кого вызывает (то есть вызов printf() и прочих видеть не желаю).

Установил «Visual CppDepend 2.8.8», «Understand 2.6», «Visustin 6.12» и «Code Visual Editor 2.7» — создают списки функций, даже блок-схемы для отдельной или выделенных функций — не то. «Understand» якобы это может, но «видит» в файле 1-7 функций вместо 25, и графа вызовов не строит.

Рекомендации?

«Doxygen» и прочее не подходит, если его надо компилировать; желаю готовую программу для Win32.


+2 часа: Так, «Doxygen» имеет нормальную инсталляцию, делает html и картиночки, но искомое не строит.


+4 часа: Вынужден признать, что:

1. установив (кроме 6 хороших программ которые не принесли результата, ломались или висли) GraphViz и

2. прописав его «bin» директорию для Doxygen (вкладка «Expert», элемент «Dot» у дерева «Topics», эдит-бокс «DOT-PATH»), и

3. поставив необходимые чек-боксы (EXTRACT_ALL, CALL_GRAPH и CALLED_GRAPH — как сказано в stackoverflow.com/questions/27857/c-c-source-code-...)

4. и создав фейковый graph_legend.png

— лог программы наконец-то оказался большим и без ошибок, в директории указанной как Output для этого «проекта» (2 файла с одинаковым именем — cpp и h ) появилось 190 файлов и среди них 54 png — с графами для каждой функции (кто её вызывает и другой файл — кого она вызывает).

Но, блин, как мне получить общую картину, а не для каждой функции отдельно??
  • Вопрос задан
  • 5124 просмотра
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SP_77 Автор вопроса
Вроде бы к сожалению «Doxygen» не различает функции с одинаковыми названиями но разным количеством параметров. :(
Хотя ок; в статичном анализе программы (по коду а не по результатам лога) сложно понять какой подвид функции будет вызван. Возможно всё можно включить (найдя и) прописав нужные опции. Но в моём варианте визуализации указаны эти две функции, и для первой ниже разрисовано в графе что её все вызывают. Ниже идёт её тёзка без графа, как будто её не вызывают (из этого cpp фала), что есть неправда.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы