First off. The main purpose of DependencyAnalysis is to provide a static analysis tool that integrates with any unit test framework. Therefore, any user interface is a pure convenience feature.
The Addin shall assist you to get an overview on your projects actual architecture


  • For Visual Studio download the Visual Studio Addin and extract it to your personal addin directory “\Users\eg\Documents\Visual Studio 2012\Addins”. After restarting you will see a menu item “Tools\Egg and Gherkin (DependencyAnalysis)”.
  • SharpDevelop users extract the SharpDevelop Addin to a directory of choice. Register the Addin using Tools\Addin Manager. Restart your IDE, a new menu item “Tools\Egg and Gherkin (DependencyAnalysis)” appears. The addin targets SharpDevelop 4.3. To install in another version of SharpDevelop change the version number in the theeg.DependencyAnalysis.SdAddin.addin file.
  • MonoDevelop (Xamarin Studio, Playstation Mobile Studio etc.) users download theeg.DependencyAnalysis.MonoAddin.mpack. In your IDE install the addin from "Tools\Addin Manager". Restart your IDE, a new menu entry "Tools\Egg and Gherkin" appears. The addin was compiled against Version 4.0 of MonoDevelop. To target another version change the version number of the Manifest.addin.xml/ files inside the mpack archive. Note that Egg and Gherkin requires a .net Runtime that includes WPF. Even for MonoDevelop Microsofts .net Runtime must be installed. 


Project List



Hit Reload to refresh the list of modules. It is necessary, when you add, delete or rename projects.


After executing an incremental build of your solution, the addin will start an external process with name AnalysisHost.exe. The paths to output assemblies of selected projects are passed to AnalysisHost. It will build the dependency model and calculates basic metrics. Currently de-/serialization of data takes a bit more than 50% percent of the total execution time. Starting a different process is required as you do not want to load the assemblies into the IDE application, which would result in no longer being able to compile the project. Even unloading assemblies using different AppDomains is a bit tricky. Favoring serialization over marshalling has the advantage that the analysis process can be run on a different machine than the visualization and perception. That kind of usage is prepared and will be enabled out of the box later on.

Metrics Grid


Interaction with Graphs


Zoom - [Ctrl] + Mouse wheel

Scroll vertically - Mouse wheel

Scroll horizontally - [Alt] + Mouse wheel


Panning - in all lists and graphs hold and move one finger to translate the viewport of the current control

Zoom - on graphs stretch or pinch with two fingers in order to zoom in or out

Proximity Graph

The proximity graph displays afferences and efferences for a selected assembly, namespace, type or member.

Select a Node

Click on a node in the graph or in the metrics grid to change the selected item in proximity graph.


Select a Transition

A click on a transition open a window that contains the detailed information for that transition.


Architecture Graph

The architecture graph gives an overview of whole struture of the project. The strength of transitions represents the coupling by counting the references.


The “…” button on a vertex denotes a subgraph you can expand to see the dependencies within it. Currently the architecture graph does not show you how for example type of one namespace refer to types of other namespaces. This is subject to the proximity graph. The purpose of architecture graph is to give a clue how parts of a component interact with each other; modules in a project, submodules in a module, types in a submodule (package), or even members in a type.


You may limit the displayed modules to those that are part of the project or you may show also framework and third party modules.


Last edited Mar 10, 2014 at 9:08 PM by The_eg, version 14


No comments yet.