Ответ 1
Эта ссылка приводит к:
У меня есть несколько крупных проектов, над которыми я работаю в своем новом месте работы, которые имеют сложный набор статически связанных между собой зависимостей между библиотеками.
Число libs около 40-50, и действительно сложно определить, из чего первоначально была предназначена структура, на полной карте зависимостей нет четкой документации.
Какие инструменты кто-нибудь захочет извлечь такие данные?
Предположительно, самым простым способом, если бы сделали следующее:
определить набор путей, соответствующих библиотечным единицам
установить все файлы .cpp/.h внутри тех, которые принадлежат к этим единицам компиляции.
захватить дерево зависимостей 1-го порядка #include
У одного будет достаточно информации для составления карты-рефактора - и перекомпонуйте карту, пока не будет создан какой-то порядок.
Я отмечаю, что http://www.ndepend.com имеют что-то приятное, но, к сожалению,.NET.
Я прочитал кое-что о том, что Doxygen может выполнить некоторый статический анализ зависимостей с конфигурацией; кто-нибудь когда-либо прижимал его к службе для выполнения такой задачи?
Эта ссылка приводит к:
http://github.com/yuzhichang/cppdep может быть тем, что вы хотите. Я написал его для анализа зависимостей между компонентами/пакетами/группами пакетов большого проекта C/С++. Это переписывание dep_utils (adep/cdep/ldep), которое представлено в книге Джона Лакоса "Крупномасштабная разработка программного обеспечения на С++".
Этот инструмент отлично подходит для анализа дерева включений: IncludeManager. Вы должны быть в состоянии получить много полезной информации от этого инструмента.
IncludeFinder - это бесплатный инструмент, который я использовал до успешного использования.
Возможно, вы сможете использовать DoxyS в качестве справки, которая создает графы, представляющие включенные файлы, как часть сгенерированной документации.
Смотрите: http://www.doxys.org
-Martin
Я должен начать работать с крупномасштабным проектом С++, который требует управления зависимостями, поэтому, естественно, я искал некоторые инструменты. Я был удивлен, увидев, что CppDepend был отмечен как любимый здесь, поскольку одна лицензия стоит 300 евро, тогда как IncludeManager - 20 фунтов стерлингов. И выполняет ту же работу. На всякий случай, когда кто-либо использовал один или оба инструмента, есть ли "хорошая" причина, почему я должен потратить дополнительные 280 фунтов стерлингов (£ 1 ~ € 1) для CppDepend?
* Обратите внимание, что я хотел бы иметь свою личную копию, так ли она имеет это или нет, не имеет значения.