(Визуальный) Анализ зависимости проекта C ++ - PullRequest
11 голосов
/ 16 июля 2009

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

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

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

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

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

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

  3. захватить дерево зависимостей первого порядка #include

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

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

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

Ответы [ 6 ]

11 голосов
/ 16 июля 2009
4 голосов
/ 19 апреля 2010

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

3 голосов
/ 16 июля 2009

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

2 голосов
/ 07 августа 2010

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

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

-Martin

2 голосов
/ 16 июля 2009

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

1 голос
/ 27 ноября 2009

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

* Обратите внимание, что я хотел бы иметь свою личную копию, поэтому не имеет значения, имеет ли она ее у компании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...