курящая куча спагетти только что приземлилась на мой стол, и моя задача состоит в том, чтобы понять это (чтобы я мог реорганизовать / переопределить это).
Код - C, и беспорядок глобальных переменных, структурных типов и вызовов функций.
Я бы хотел построить графики кода с информацией:
- График звонков
- Какие типы структур используются в каких функциях
- Какая глобальная переменная используется в какой функции
Надеюсь, это упростит идентификацию подключенных компонентов и их извлечение в отдельные модули.
Я пробовал следующее программное обеспечение для аналогичных целей:
- ncc
- ctags
- codeviz / gengraph
- доксиген
- Египет
- поток
EDIT2:
- frama-c
- снавигатор
- Понять
Недостатками являются либо
а) требует, чтобы я был в состоянии скомпилировать код. Мой код не компилируется, так как части исходного кода отсутствуют.
б) проблемы с макросами препроцессора (например, cflow, который хочет выполнить обе ветви операторов #if). Запуск его через cpp приведет к путанице в номерах строк.
c) Мне по какой-то причине не удается заставить программное обеспечение выполнять то, что я хочу (например, doxygen; документацию для генерации графа вызовов нелегко найти, и, поскольку, похоже, в любом случае она не отображает переменные / типы данных, вероятно, не стоит тратить больше времени на изучение параметров конфигурации doxygen). РЕДАКТИРОВАТЬ: я следовал эти инструкции Doxygen , но он только строил зависимости файла заголовка.
Я нахожусь в Linux, так что это огромный плюс, если программное обеспечение для Linux и свободного программного обеспечения. Не уверен, что мой начальник понимает необходимость покупки визуализатора: - (
Например: инструмент командной строки, в котором указывается, на какие функции ссылается символ (= function, variable, type), будет очень полезен (например, addr2line, но для типов / имен переменных / функций и исходного кода).
// T