C: создание диаграмм большой библиотеки

Существуют ли какие-либо инструменты, помогающие составить схему большой библиотеки C? Я работаю над проектом по переносу существующей библиотеки C на C++. Библиотека C в значительной степени недокументирована без диаграмм. Я хотел бы использовать инструмент CASE, чтобы помочь мне понять, как взаимодействуют различные файлы. В большинстве файлов есть внешние переменные.

Если возможно, я бы предпочел визуальную диаграмму, чтобы лучше понять поток кода. Я не знаком с инструментом построения диаграмм для процедурных языков (или если он вообще существует). Я помню, что в колледже мы использовали иерархию и диаграммы потоков данных для процедурных языков.

Я знаю, что существует много инструментов для составления диаграмм ОО-языков, но я бы хотел использовать один для C. Любая помощь будет принята с благодарностью.

Предложения:


Doxygen

Это может помочь вам тремя способами:

Он может генерировать браузер онлайновой документации (в HTML) и / или автономное справочное руководство (в) из набора документированных исходных файлов. Также поддерживается генерация вывода в RTF (MS-Word), PostScript, гиперссылках PDF, сжатых HTML и справочных страницах Unix. Документация извлекается непосредственно из источников, что значительно упрощает согласование документации с исходным кодом. Вы можете настроить doxygen для извлечения структуры кода из недокументированных исходных файлов. Это очень полезно для быстрого поиска пути в дистрибутивах с большим исходным кодом. Вы также можете визуализировать отношения между различными элементами с помощью графов включений, диаграмм наследования и диаграмм сотрудничества, которые генерируются автоматически. Вы даже можете "злоупотребить" doxygen для создания нормальной документации.


cppdepend

  • OpenSource/ академическая и коммерческая лицензия (плагин MSVS)

Улучшите качество вашей кодовой базы. CppDepend - это инструмент, который упрощает управление сложной базой кода C\C++ (Native,Mixed и COM). Архитекторы и разработчики могут анализировать структуру кода, определять правила проектирования, проводить эффективный анализ кода и совершенствовать эволюцию, сравнивая различные версии кода. Эти случаи показывают, что утилита CppDepend позволяет получить глубокое представление о вашей архитектуре, дизайне и реализации. Рефакторинг и улучшение вашего дизайна и архитектуры. CppDepend предоставляет полезные графики для анализа вашего дизайна и архитектуры. Язык CQL дает вам гибкость для создания пользовательских запросов и глубокого обзора вашей кодовой базы. Вот пример использования CppDepend, чтобы помочь вашему рефакторингу. Помогите вашей миграции. Понимание существующей миграции. CppDepend помогает вам в процессе миграции. Здесь вы найдете преимущества использования CppDepend в процессе миграции.


ГКД

  • (Недит, Вим, Emacs) Учебник VIM
    • имена классов
    • макроопределения
    • имена перечислений
    • нумераторы
    • определения функций
    • прототипы / объявления функций
    • члены данных класса, интерфейса, структуры и объединения
    • названия структур
    • Определения типов
    • объединение имен
    • переменные (определения и внешние объявления)

csope

  • (линия CMD, VIM) VIM учебник
    • Позволяет искать код для:
    • все ссылки на символ
    • глобальные определения
    • функции, вызываемые функцией
    • функции, вызывающие функцию
    • текстовая строка
    • шаблон регулярного выражения
    • файл
    • файлы, включая файл

3 ответа

Решение

Doxygen может генерировать различные типы диаграмм взаимодействия - файлы, вызовы функций и т. Д. С установленной переменной конфигурации EXTRACT_ALL он будет генерировать диаграммы и перекрестные ссылки даже для кода без комментариев документации.

CppDepend, если вы работаете в Windows, расширяет Doxygen языком запросов и возможностью перемещаться в графе зависимостей.

Doxygen, как упомянул Ник Мейер, вероятно, хорошая ставка. Вы также можете попробовать классические инструменты перекрестных ссылок ctags и cscope, которые вы можете использовать в качестве автономных инструментов или интегрировать в ваш текстовый редактор.

Другие вопросы по тегам