C: создание диаграмм большой библиотеки
Существуют ли какие-либо инструменты, помогающие составить схему большой библиотеки C? Я работаю над проектом по переносу существующей библиотеки C на C++. Библиотека C в значительной степени недокументирована без диаграмм. Я хотел бы использовать инструмент CASE, чтобы помочь мне понять, как взаимодействуют различные файлы. В большинстве файлов есть внешние переменные.
Если возможно, я бы предпочел визуальную диаграмму, чтобы лучше понять поток кода. Я не знаком с инструментом построения диаграмм для процедурных языков (или если он вообще существует). Я помню, что в колледже мы использовали иерархию и диаграммы потоков данных для процедурных языков.
Я знаю, что существует много инструментов для составления диаграмм ОО-языков, но я бы хотел использовать один для C. Любая помощь будет принята с благодарностью.
Предложения:
- CodeProject Tutorial
- Doxygen Официальный учебник
- Stackru Force Недокументированный код C
- Не забудьте скачать Graphviz, если вы хотите графическое представление и задать путь к точке, например:"C:\Program Files\Graphviz2.26.3\bin\"
Это может помочь вам тремя способами:
Он может генерировать браузер онлайновой документации (в HTML) и / или автономное справочное руководство (в) из набора документированных исходных файлов. Также поддерживается генерация вывода в RTF (MS-Word), PostScript, гиперссылках PDF, сжатых HTML и справочных страницах Unix. Документация извлекается непосредственно из источников, что значительно упрощает согласование документации с исходным кодом. Вы можете настроить doxygen для извлечения структуры кода из недокументированных исходных файлов. Это очень полезно для быстрого поиска пути в дистрибутивах с большим исходным кодом. Вы также можете визуализировать отношения между различными элементами с помощью графов включений, диаграмм наследования и диаграмм сотрудничества, которые генерируются автоматически. Вы даже можете "злоупотребить" doxygen для создания нормальной документации.
- OpenSource/ академическая и коммерческая лицензия (плагин MSVS)
Улучшите качество вашей кодовой базы. CppDepend - это инструмент, который упрощает управление сложной базой кода C\C++ (Native,Mixed и COM). Архитекторы и разработчики могут анализировать структуру кода, определять правила проектирования, проводить эффективный анализ кода и совершенствовать эволюцию, сравнивая различные версии кода. Эти случаи показывают, что утилита CppDepend позволяет получить глубокое представление о вашей архитектуре, дизайне и реализации. Рефакторинг и улучшение вашего дизайна и архитектуры. CppDepend предоставляет полезные графики для анализа вашего дизайна и архитектуры. Язык CQL дает вам гибкость для создания пользовательских запросов и глубокого обзора вашей кодовой базы. Вот пример использования CppDepend, чтобы помочь вашему рефакторингу. Помогите вашей миграции. Понимание существующей миграции. CppDepend помогает вам в процессе миграции. Здесь вы найдете преимущества использования CppDepend в процессе миграции.
- (Недит, Вим, Emacs) Учебник VIM
- имена классов
- макроопределения
- имена перечислений
- нумераторы
- определения функций
- прототипы / объявления функций
- члены данных класса, интерфейса, структуры и объединения
- названия структур
- Определения типов
- объединение имен
- переменные (определения и внешние объявления)
- (линия CMD, VIM) VIM учебник
- Позволяет искать код для:
- все ссылки на символ
- глобальные определения
- функции, вызываемые функцией
- функции, вызывающие функцию
- текстовая строка
- шаблон регулярного выражения
- файл
- файлы, включая файл
3 ответа
Doxygen может генерировать различные типы диаграмм взаимодействия - файлы, вызовы функций и т. Д. С установленной переменной конфигурации EXTRACT_ALL он будет генерировать диаграммы и перекрестные ссылки даже для кода без комментариев документации.
CppDepend, если вы работаете в Windows, расширяет Doxygen языком запросов и возможностью перемещаться в графе зависимостей.
Doxygen, как упомянул Ник Мейер, вероятно, хорошая ставка. Вы также можете попробовать классические инструменты перекрестных ссылок ctags и cscope, которые вы можете использовать в качестве автономных инструментов или интегрировать в ваш текстовый редактор.