Analyzing complex code

Quite often you come across some complex code, and the first thing you think of is “is there a diagram which lays this out?”. .NET Reflector and its large set of plugins do help in this aspect and one of the plugins that is like is the SequenceViz, which gives you sequence diagrams in SVG format. This is in alpha, so be prepared for crashes. :). I use it with Inkscape which allows you the ability to edit the SVG files. Bit of a pain, you would say. hmmm….

However, recently i got a chance to play around with NDepend, a static analysis tool. It has a lot of functionality and it does its job well. The one thing I like about this tool is the graph that it shows for the dependencies. And not just that, you can use the cql language (which is similar to SQL) to get a lot of other information like methods using API directly and indirectly and so forth. Additionally you get to put these results on a graph or a matrix. I am biased towards visuals and the graph being interactive is awesome 🙂 Take a look at Patricks post here.. It shows what I like abt it.

One more thing that is powerful is that you can easily get data on your assemblies based on specific metrics like Cyclomatic complexity. It also generates a comprehensive analysis report with all metrics, if thats whats interesting to you. It also has functionality to compare different dll versions and provide code coverage analyis. Theres a slight learning curve but once you get the hang of it, its goodness.. :).. You can try out the trial version out on their site.


Share this post


Comments (3)

  1. Yeah, NDepend is awesome. Great for looking at deltas between different versions of assemblies, analyzing coupling etc. I love it.

  2. Jao Boch says:

    I’ve not used NDepend but McCabe IQ from McCabe Software has a number of diagrams/graphs and dashboards for viewing complexity and coverage data for a large number of metrics and quite a development languages.  Quite helpful in reengineering and other duties.