Disclaimer

I’ve received from NDepend a free license to test their software. However, my review contains only my point of view and hasn’t been passed by NDepend.

What is NDepend ?

NDepend is a static code analyzer with a strong focus on Technical Debt helping you to visualize the code architecture and the quality of your code.

To do so, it provides multiple comprehensive built-in analyzer to get an overview of your technical debt in seconds.

You can add it to your Visual Studio or as standalone. You can also use it in a continuous integration environment.

Close relative

SonarQube is another static analyzer that comes in free and paid version. But as NDepend states in their documentation, they can both work together as there is only a small overlap in their rules.

Both NDepend and SonarQube are static analyzers that offer a rule-based system to detect problems in C# and VB.NET code. However, the NDepend default Rules-Set has very few overlaps with the SonarQube rules and also with the Roslyn analyzers.

NDepend DOc

Programs

  • Visual NDepend, a standalone UI application for performing code analysis
  • Visual Studio extension for running the same analysis against a solution in VS
  • NDepend.Console.exe, a console version of the code analysis runner for automation scenarios

In this review I’m using the Visual Studio Extension.

HTML Report/Dashboard

HTML Dashboard

The dashboard is the starting point. It’s an HTML report generated by the program. You can see just in a glance all the results of the different modules of NDepend. It goes from dependency tree to technical debt while passing by a tree map of Line of Code.

I’m amazed by the estimation of hours spend on the project and the numbers of hours needed to be spent to fix the tech debt. On their website you can find how they come with that number.

VS Extension

This is the beef of the product.

Firstly, I’m astonished by the quality of the UI, or more likely the UX. Everything has tooltip, either to explain to you the first time how to use the program or to give more details on the items you’re consulting. This is greatly appreciated.

Keep in mind, the main reason to use NDepend is to understand how each module works together in your program and how to keep the technical debt low. All the tools are tailored to help you do that. Giving advice and metrics in each module.

Moreover, it provides a way to do snapshot, for you to be able to measure and follow your progress.

The most amazing part for me, it’s the amount of details the extension give you and how fast it parses your assemblies and links them to your code.

It also gives you so many metrics to help you prioritize by where you should start reducing the debt by giving you return on investment (ROI) metrics. It helps greatly to make the right decision on which issue to work first, and how much time you’ll need to invest into fixing it.

Everything is also exportable. Any of the chart, reports and also the “NDepend” project.

Dashboard

Dashboard from Visual Studio

As much has you can generate a static HTML dashboard, in the IDE you can work with an interactive version. This dashboard will be the base of your usage of the program when you start attacking your technical debt. You can easily see your progress and how your project is evolving directly for that page.

Dependency Map

You can easily see all the dependencies of your program. In my case, it’s pretty low since I don’t use that many deps, but since it’s completely interactive, you can see in great details which part of your project use which dependency.

I can’t show you the tooltips on the image, but you have to imagine that when you hover each dependency, you get a great tooltip on the right side of the screen which the number of type you’re using from the dependency, the number of methods you call, etc … It’s great to understand how tightly your link to that lib

Dependency map from the report

Tree Map

Tree map of your project/program

This tool is amazing, you can choose the different metric you need to generate an interactive tree map of your program. With this, you can finally analyze and dig deep into the complexity of your application, understand the cyclomatic complexity of your methods, etc …

Also, if you ask it to use method as the level, when you double-click on an item, you’re redirected to the exact method in your code. It’s very useful when you’re in the middle of reducing your technical debt.

Issues Found

Issue found by NDepend

Here we go, here we have a full dashboard listing, explaining all the different issues found by NDepend in the code.

In the bottom panel you have the different groups of issue, in the middle the exact name of the rule that is violated and on the right the full explanation of the rule and the part of the code that is violating the rule.

To that, imagine that on each entry you also have a tooltip that give you even more information, like #LoC or complexity, the number of issue linked to that specific function, etc …

Conclusion

The core of NDepend is to help you understand your technical debt and help you with correcting it. The seamless integration with Visual Studio makes it one more tool to any C# developer’s belt. It’s easy to use and provides important metrics and issue detection to make you a better developer.

I’m still amazed by the in-depth scanning of the project. I never thought you could not only infer so much about a project but also give so many pointer on how to improve it ! I tip my hat to the team at NDepend for creating an in-depth project analyzer tool directly integrated with Visual Studio.