Как визуализировать статические зависимости в С++ коде?

Serpent555

Есть большой проект на С++ под Visual Studio. Хочется визуализировать зависимости между его сущностями, чтобы лучше понять структуру проекта. Первое, что приходит на ум - граф зависимостей классов. Каким образом его построить?
Рассмотрим следующий пример кода:
class Used {
public:
void bar;
};

class Base { };

class Derived : public Base {
public:
void foo(Used*); // Dependency on class Used
};

Хочется получить что-то типа такого:

Пробовал следующее.
1. CppDepend. Умеет делать в точности то, что нужно, но по каким-то причинам глючит на больших проектах: не видит некоторых зависимостей. Никаких ошибок при анализе не выдёт, так что понять, что именно его смущает, на таком большом проекте затруднительно. Плюс все зависимости показаны одним и тем же типом стрелок. Писал разработчикам, давно обещают выкатить 5-ю версию, но всё никак не могут, поправили только несколько небольших багов в 4-й версии. Картинка для примера:

2. doxygen. Умеет строить collaboration graph для классов. Показывает зависимости, но вот беда: за зависимости считает только наследование и аггрегацию. Задавал по этому поводу вопрос на stackoverflow, безуспешно. Картинка в начале, "что хочется", получена как раз с помощью doxygen, если foo объявить как поле типа Used, а не как метод с аргументом Used. Реальная картинка для примера выглядит так:

3. Visual Studio 2013 Ultimate. Опция Architecture -> Generate dependency graph -> For solution строит то, что нужно. Но оно вообще не работает для зависимостей между разными проектами! Капец. И стрелки тоже все одного вида:

Интересуют предложения, как построить такой граф зависимостей между классами, а также иные способы визуализации статических зависимостей в С++ коде.

PooH

у меня в visual studio 2012 ultimate в обозревателе архитектуры есть возможность выбирать файлы из файловой системы (а не только из проекта)

Serpent555

у меня в visual studio 2012 ultimate в обозревателе архитектуры есть возможность выбирать файлы из файловой системы (а не только из проекта)
Фишка в том, что я делаю анализ всего солюшна, и он выполняется, рисуются все проекты на одной диаграмме. Вот только связей между ними почему-то нет!
Оставить комментарий
Имя или ник:
Комментарий: