Программное обеспечение для визуализации кода спагетти?

дымящаяся куча спагетти только что приземлилась на мой стол, и моя задача - понять ее (чтобы я мог ее реорганизовать / заново реализовать).

Код - C, и множество глобальных переменных, типов структур и вызовов функций.

Я хотел бы построить графики кода с информацией:
- График звонков
- Какие типы структур используются в каких функциях
- Какая глобальная переменная используется в какой функции

Надеюсь, это упростит идентификацию подключенных компонентов и извлечение их в отдельные модули.

Я пробовал следующее программное обеспечение для аналогичных целей:
- ncc
- ctags
- codeviz / gengraph
- доксиген
- Египет
- cflow
РЕДАКТИРОВАТЬ2:
- frama-c
- снавигатор
- Поймите

. Недостатки:
а) требует от меня возможности компилировать код. Мой код не компилируется, так как части исходного кода отсутствуют.
б) проблемы с макросами препроцессора (например, cflow, который хочет выполнять обе ветви операторов #if). Если запустить его через cpp, номера строк будут испорчены.
c) Мне по какой-то причине не удается заставить программное обеспечение делать то, что я хочу сделать (например, doxygen; документацию для генерации графа вызовов найти нелегко, и поскольку она, похоже, все равно не отображает переменные / типы данных, вероятно, не стоит тратить больше времени на изучение параметров конфигурации doxygen). РЕДАКТИРОВАТЬ: Я следовал этим инструкциям Doxygen , но он отображал только зависимости файлов заголовков.

Я использую Linux, так что это огромный плюс, если программное обеспечение для linux и бесплатное программное обеспечение. Не уверен, что мой босс понимает необходимость покупки визуализатора: - (

Например: инструмент командной строки, в котором перечислены функции, на которые ссылается символ (= функция, переменная, тип), будет большим подспорьем (например, addr2line , но для типов / имен переменных / функций и исходного кода).

// T

26
задан Community 23 May 2017 в 10:29
поделиться

2 ответа

Если вам нравится командная строка;) возможно, вы можете попробовать cscope , он выполняет статический анализ кода и может сказать вам, где указаны некоторые символы / переменные / функции ... Не Святой Грааль, но это может быть очень полезно для просмотра неизвестного исходного кода.

Есть также некоторый графический интерфейс, который может обрабатывать результаты csope (Vi, Emacs, JEdit ...).

С другой стороны, Eclipse с плагином CDT также может помочь вам сориентироваться в коде спагетти, который вы должны поддерживать.

3
ответ дан 28 November 2019 в 17:30
поделиться

Если вы хотите узнать, в каких функциях символ объявляется или ссылается, вы можете попробовать LXR . Он не основан на консоли, но вполне пригоден для использования.

0
ответ дан 28 November 2019 в 17:30
поделиться
Другие вопросы по тегам:

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