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