(Visual) анализ зависимостей проекта C++

У меня есть несколько больших проектов, над которыми я работаю на своем новом месте работы, которые имеют сложный набор статически связанных библиотечных зависимостей между ними.

число libs около 40-50, и очень сложно определить, какой изначально должна была быть структура, на полной карте зависимостей нет четкой документации.

какие инструменты кто-нибудь рекомендовал бы для извлечения таких данных?

предположительно, самым простым способом, если следующий:

  1. определите набор путей, соответствующих единицам библиотеки

  2. установить все .СРР./H файлы в пределах тех, которые принадлежат к этим единицам компиляции

  3. захват 1-го порядка #включить дерево зависимостей

У вас будет достаточно информации, чтобы составить карту - рефактор - и перекомпозировать карту, пока не будет создан некоторый порядок.

замечу, что http://www.ndepend.com есть что-то хорошее, но это исключительно .NET к сожалению.

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

6 ответов


этой ссылке приводит к:

CppDepend


http://github.com/yuzhichang/cppdep может быть то, что вы хотите. Я написал его для анализа зависимостей между компонентами/пакетами/группами пакетов большого проекта C/C++. Это переписывание dep_utils (adep/cdep/ldep), которое обеспечивается книгой Джона Лакоса " крупномасштабный дизайн программного обеспечения C++".


этот инструмент отлично подходит для анализа включают дерево: IncludeManager. Вы должны иметь возможность получить много полезной информации от этого инструмента.


IncludeFinder это бесплатный инструмент, который я использовал раньше успешно.


вы можете использовать DoxyS в качестве справки, которая создает graps, представляющие включенные файлы как часть сгенерированной документации.

см.:http://www.doxys.org

-Мартин


Я должен начать работать с крупномасштабным проектом c++, который нуждается в управлении зависимостями, поэтому, естественно, я искал некоторые инструменты. Я был удивлен, увидев, что CppDepend был отмечен как фаворит здесь, поскольку одна лицензия стоит €300, тогда как IncludeManager - £20.. И делает ту же работу. На всякий случай, если кто-то здесь использовал один или оба инструмента, есть ли "хорошая" причина, почему я должен потратить дополнительные £280 (£1~€1) для CppDepend?

*обращаем ваше внимание, что я бы мой личный экземпляр, так ли компания или нет, не имеет значения.