Как визуализировать статические зависимости в С++ коде?
у меня в visual studio 2012 ultimate в обозревателе архитектуры есть возможность выбирать файлы из файловой системы (а не только из проекта)Фишка в том, что я делаю анализ всего солюшна, и он выполняется, рисуются все проекты на одной диаграмме. Вот только связей между ними почему-то нет!
Оставить комментарий
Serpent555
Есть большой проект на С++ под Visual Studio. Хочется визуализировать зависимости между его сущностями, чтобы лучше понять структуру проекта. Первое, что приходит на ум - граф зависимостей классов. Каким образом его построить?Рассмотрим следующий пример кода:
Хочется получить что-то типа такого:
Пробовал следующее.
1. CppDepend. Умеет делать в точности то, что нужно, но по каким-то причинам глючит на больших проектах: не видит некоторых зависимостей. Никаких ошибок при анализе не выдёт, так что понять, что именно его смущает, на таком большом проекте затруднительно. Плюс все зависимости показаны одним и тем же типом стрелок. Писал разработчикам, давно обещают выкатить 5-ю версию, но всё никак не могут, поправили только несколько небольших багов в 4-й версии. Картинка для примера:
2. doxygen. Умеет строить collaboration graph для классов. Показывает зависимости, но вот беда: за зависимости считает только наследование и аггрегацию. Задавал по этому поводу вопрос на stackoverflow, безуспешно. Картинка в начале, "что хочется", получена как раз с помощью doxygen, если foo объявить как поле типа Used, а не как метод с аргументом Used. Реальная картинка для примера выглядит так:
3. Visual Studio 2013 Ultimate. Опция Architecture -> Generate dependency graph -> For solution строит то, что нужно. Но оно вообще не работает для зависимостей между разными проектами! Капец. И стрелки тоже все одного вида:
Интересуют предложения, как построить такой граф зависимостей между классами, а также иные способы визуализации статических зависимостей в С++ коде.