Направи си сам анализ на връзките в проект, SavePearlHarbor

Още едно копие на пристанището

Главно меню

Навигация на публикации

Направи си сам анализ на връзките към проекти

За да започнете да разбирате голям проект, трябва да разберете какви логически модули има в проекта и как са свързани. В случай на използване на Visual Studio в скъпи издания на продукта са налични функции за изграждане на различни графики на зависимости. За съжаление, първо, студията с меню "Архитектура" са наистина скъпи. Второ, в по-стари проекти, които все още са изградени и имат проектни файлове само за Visual Studio 2008, самото студио не предлага много. Разбира се, заслужава да се отбележи, че има скъпи инструменти за тази цел (например, Understand). Но като за начало ми беше достатъчно, че скицирах малък PowerShell скрипт. Този скрипт генерира dot файл за GraphViz въз основа на sln файла. Резултатът е диаграма като на фигурата по-долу, с която вече можете да започнете да разбирате проекта.

анализ

След това ще ви кажа как работи този скрипт. Първото нещо, което трябваше да направя, беше да анализирам sln файловете и проектните файлове, които са записани там. Със sln файловете имахме късмет веднага, защото. в различни версии на студиото (започвайки с Visual Studio 2008), списъкът с проекти изглежда по същия начин като набор от редове със следната форма:

Можете да извадите списък с всички такива редове с един ред в PowerShell:

Ясно е, че $slnFile е пътят до файла, а "Project\(.*vcproj" е регулярен израз за избиране на редове. В sln файла всички пътища са относителни. Следващата задача ще бъде да извлечете относителните пътища от получените редове и да изградите пълни пътища към файловете въз основа на тях. Можете да направите това с още един ред:

Това предполага, че $s съдържа един от получените преди това низове.Ясно е, че има разделяне на поднизове, които се разделят със запетая, чрез командата ($ s -split ','). Вторият подниз (получен чрез [1]) съдържа само относителния път. Премахнете излишните интервали с Trim и премахнете кавички с Replace. След това прикачваме пътя към sln файла към относителния път с командата Join-Path. Като го обвием в цикъл, получихме набор от пътища към проекти. Сега е време да разгледаме файловете на проекта, за да открием зависимостите между тях.

Microsoft по време на прехода към Vistual Studio 2010 промени формата на файловете на проекта. Но хубавото е, че файловете с решения както във VS2008, така и във VS2010 са в XML формат. Това ви позволява да използвате езика за заявки XPath, за да получите лесно желаното поле. В PowerShell това става с командата Select-Xml. С негова помощ е лесно да се извлекат зависимости от файла на проекта. Освен това искам различните типове проекти в крайната графика да се показват в различни цветове. За да направите това, трябва да разберете какви видове има. Това може да стане чрез подаване на следната команда към директория с куп проекти:

Може да забележите, че в PowerShell е удобно да пренасочвате потока с резултатите от изпълнението на командата към следващата команда, като използвате знака "". Командата Get-ChildItem ви помага да намерите всички файлове от тип vcxproj, а Select-Xml избира типа конфигурация от тях. За всеки файл показваме типа на проекта на екрана. При голям брой файлове изходът не е много информативен, но PowerShell има команда Group-Object, която спасява положението, като групира резултатите. Като цяло получаваме нещо подобно:

Същото може да се направи за файлове от типове vcproj, csproj и други. Във vcproj файловете типовете конфигурация са кодирани с числа, но какво стои зад тях не е трудно да разберете, като отворите проекта във Visual Studio.

На този етап имаме проекти, техните видове и връзки между тях.Можете да генерирате файл GraphViz. Това се прави много просто - веднага напишете заглавието на следния формуляр:

И след това всички проекти и връзките между тях:

Изходният код за инструмента за избор на цвят, както и останалата част от скрипта, могат да бъдат намерени в Bitbucket.