пятница, 30 мая 2014 г.

Анализ зависимостей в проектах

Для того, чтобы разобраться в существующих проектах, нужно понять, какие в проекте есть логические модули и как они связаны. В случае использования Visual Studio, в дорогих редакциях продукта доступны функции построения различных графов зависимостей. К сожалению, во-первых, студии с меню Architecture реально дорого стоят. А, во-вторых, в старых проектах, которые до сих пор собираются и имеют проектные файлы только для Visual Studio 2008, сама студия особенно ничего не предлагает.

Конечно, стоит отметить, что для такой цели существуют дорогие инструменты (например, Understand). Но для начала мне хватило того, что я набросал небольшой скрипт на PowerShell. Скрипт этот генерирует dot-файл для GraphViz на основе sln файла. В результате получается схема, как на рисунке ниже, с которой уже можно начинать разбираться в проекте.
Цвет модулей определяется типом проекта (EXE, DLL, LIB), а цвета связей автоматически выбираются так, чтобы их было легче различать. В скрипте добавлена поддержка как Visual Studio 2008, так и последующих версий. Можете попробовать его на своих проектах. Для работы требуется PowerShell как минимум версии 3.0.

Скрипт скачать можно на GitHub. Там же я буду его развивать по мере необходимости или, может быть, кто-то еще захочет внести свой вклад. Чуть позже опишу детали создания скрипта.