Подтвердить что ты не робот

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

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

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

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

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

Я попробовал следующее программное обеспечение для аналогичных целей:
- ncc
- ctags
- codeviz/gengraph
- doxygen
- Египет - cflow
EDIT2:
- frama-c
- snavigator
- Поймите,

Недостатки этих или a) требует от меня возможности компилировать код. Мой код не компилируется, так как отсутствуют части исходного кода.
b) проблемы с макросами препроцессора (например, cflow, который хочет выполнить обе ветки операторов #if). Запуск его через cpp испортил бы номера строк.
c) Мне по какой-то причине не удается заставить программное обеспечение делать то, что я хочу сделать (например, doxygen, документация для генерации графа вызовов не так-то просто найти, и поскольку в любом случае, похоже, это, вероятно, не стоит тратить больше времени на изучение параметров конфигурации doxygen). EDIT: я выполнил эти Doxygen instrcutions, но он только закрепил зависимости файлов заголовков.

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

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

//Т

4b9b3361

Ответ 1

Мой голос переходит на gnu global. Он обладает всеми функциями ctags/cscope, а также возможностью генерировать полностью индексированный html, который позволяет вам просматривать код в вашем любимом браузере. Запустите его в apache и у вас есть веб-сервис, доступ к которому любой может получить, включая полные возможности поиска.

Он прекрасно интегрируется в emacs/vim/даже bash -shell, и вы можете использовать его непосредственно из командной строки.

Чтобы увидеть это в действии на ядре linux, посетите this

Объедините это с инструментом для циклической сложности плагин для eclipse, который вычисляет сложность вашего кода. помимо циклической сложности, с которой он может справиться:

  • McCabe Cyclomatic Complexity
  • Эфферентные муфты
  • Отсутствие сцепления в методах.
  • Линии кода в методе
  • Число полей
  • Количество уровней
  • Число мест в области видимости
  • Число параметров
  • Число заявлений
  • Взвешенные методы для каждого класса

... и у вас должно быть все, что вам нужно.

Ответ 2

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

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

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

Ответ 3

Это не бесплатно, а afaik не linux, а cppDepend может стоить оценить - по крайней мере, пока кто-нибудь не предложит более подходящее предложение:)

http://www.cppdepend.com/ [Демо-видео здесь]

Ответ 4

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