🚀 News: We are launching the Kontext Labs Platform Pilot! Click here to join our pilot program.

Understand Code Dependencies with Visual Studio

2014-10-11

Visual Studio provides a convenient tool to generate visual code dependencies. It helps to identity circular references issues and also hubs.

To learn more details about this function, visit http://msdn.microsoft.com/library/dd409453(VS.110).aspx.

Find the tool

Go to menu “Architecture –> Generate Dependency Graph” and you will be able to generate the visual diagrams for your projects or solution.

Windows-Live-Writer/Understand-Code-Dependencies-using_B3AA/image_thumb.png

Sample – Hub

Windows-Live-Writer/Understand-Code-Dependencies-using_B3AA/image_thumb_1.png

ContextProject.DataServices.The above diagram shows how my projects reference to each other.  Three projects are Hubs: ContextProject.Website, ContextProject.DataServices.Syndication, ContextProject.DataServices.MetaWeblog and ContextProject.DataServices, which implies that they are the top 25% highly connected nodes.

Windows-Live-Writer/Understand-Code-Dependencies-using_B3AA/image_thumb_2.png

Because of these dependencies, it is hard to change and maintain the code. We can refactor can components to reduce the complexity of dependencies.

Sample – Circular Reference

Expand the assembly nodes,  we can identify the circular references.

Windows-Live-Writer/Understand-Code-Dependencies-using_B3AA/image_thumb_3.png

In the above diagram, three namespaces form a circular reference. Drilling-down to details, I find out the static property Configurations caused this issue.

Windows-Live-Writer/Understand-Code-Dependencies-using_B3AA/image_thumb_4.png

Sample – Other

I am planning to replace my IoC component NInject with Microsoft Unity. The visual dependency diagram can help me to find out all the classes/properties/methods I need to change.

Windows-Live-Writer/Understand-Code-Dependencies-using_B3AA/image_thumb_5.png

Summary

The visual dependencies can help us identify code that might be overly complex or that might need improvement. It will be very useful when you begin to analyze a new project you didn’t work on before.