Review: NDepend 2017

NDepend released their new version for 2017 with new features like Smart Technical Debt estimation and Quality Gate checks. Today, I give you a review of NDepend 2017.

Written by Jonathan "JD" Danylko • Last Updated: • Reviews •
Long screen of JavaScript code

Last year, I wrote a review about NDepend and was quite pleased with how well it worked with Visual Studio, ReSharper, and Reflector.

This static code analysis tool presents developers with a 50,000-foot view of your code.

It can also drilldown into specific code segments using CQLINQ to determine what is a bad practice (decoupled code) and which segment is harder to read, for example.

NDepend has their CQLINQ to allow you to write your own LINQ query for analyzing specific conditions in your code.

This year, NDepend 2017 has taken their features up a notch. These new features empower developers to make conscious decisions before checking in code.

The installation for NDepend 2017 went smoother than the last version when I installed it on my home machine.

After looking it over, I felt I didn't put in enough time to give the product a thorough review, so I decided to take it into work and put it through its paces there.

I'll be honest...I tried to install it at work, but the installation wouldn't allow it. I already had it installed somewhere else so it aborted the install.

This is why it took me a while to give this the proper technical review it deserves.

New Features

Technical Debt

One of the biggest features introduced in NDepend 2017 is the Technical Debt estimation.

Technical debt is the esimated man-time it would take to fix the issue. The severity (or Issues) would include categories like blocker, critical, major, minor, or info.

This metric was added to the dashboard.

NDepend Dashboard Results for DanylkoWeb

But how does it calculate the technical debt for the project?

By setting up the debt settings.

NDepend Technical Debt Settings

Once everything is entered, you now have a real-time estimate of how much time it would take to make your code maintainable.

According to my DanylkoWeb code, I currently have a 'B' rating. If I fix the issues mentioned by NDepend and invest 3 days to fix the issues, I would have an 'A' rating.

Quality Gates

Another cool feature in NDepend 2017 is the ability to have Quality Gate checks.

A Quality Gate is a check applied to a piece of code meant to enforce standards before releasing and eventually adding it to source control.

NDepend 2017 can set up a number of quality gates for your code using CQLINQ's capabilities.

Quality Gates are located in the Queries and Rules Explorer and explain all of the gates failing with a percentage and how much time it would take to fix them.

These quality gates can provide developers with a disciplined standard to reach before checking in code to source control.

Issue Management

Since we now have all of these new metrics, we need a way to consolidate them into one place to make some informed decisions.

A new Issues menu item was added to offer developers actionable items on how to approach fixing the issues in the system.

NDepend 2017 Issues Menu

NDepend also included all of the issues on the dashboard as well so you can examine all of the Quality Gate, Rules, and Issues required to refactor the system into a more maintainable project.

The awesome thing about this particular feature is the way you can drill down into each issue with a simple click and see a comparison from the last time code was checked in to the current code check-in.

This simple issue list can be used as a to-do list for your efforts to write maintainable code.

One thing I still experience with the product is the analysis results report you need to fix one thing to make your code better. Once that code is modified, you re-run the analysis and it reports the exact opposite of what you just fixed as an issue. So you do have some rules you may want to disable for future analysis.

Baseline Enhancements

While working with NDepend, I've seen subtle UI improvements and the Baseline Toolbar provides a welcome addition to the tools.

You can quickly click on a time period to see an immediate examination of the code. Quality Gates and Rules now run against both current the baseline results. Once the results are calculated, you can run queries on Debt estimation, Issues and status differences.

I like the ability to go back and forth between different time periods to examine the code at different stages. This gives me a better idea of what area to focus on next when refactoring code.

Conclusion

Since this new version of NDepend has added so many new features, it's hard to cover all of them since I've only been using the new version for a little over a month.

From what I can see, NDepend has outdone itself again with the Technical Debt, Quality Gates, and Issues Management features.

A couple of features I didn't cover in this review:

  • Code querying improvements
  • Report improvements
  • .NET Core support
  • A new licensing and release scheme
  • Support for Visual Studio 2017
  • Team Services VSTS and TFS 2017 advanced extension (which in currently in beta).

To get a better idea of all of the features, check their NDepend 2017 Features list.

NDepend continues to impress me with their robust list of features with every version they release. The amount of power to analyze a codebase at a solution-level is staggering while providing developers with immediate feedback to constantly improve their code through features like technical debt, quality gates, and issues management.

NDepend truly empowers developers to build solid products using constant analysis and feedback.

As always, I would definitely recommend NDepend 2017 to developers looking to improve their code and provide an eye-opening experience from the results.

Have you used NDepend yet? What are your thoughts of this product? Let's discuss in the comments below.

NDepend 2017

Rating: 5/5

Summary

NDepend 2017 has stepped up it's game with the live Technical Debt analyzer, Quality Gates, and Issue Management making it the best static code analysis tool for real-time coding in Visual Studio while the Build Machine Edition provides a way for continuous integration to report feedback to developers on code check-in.

Good

  • Finally! A flexible way to calculate Technical Debt
  • Quality Gate Rules
  • Issues Management
  • Better Installation

Bad

  • One installation for one machine

Did you like this content? Show your support by buying me a coffee.

Buy me a coffee  Buy me a coffee
Picture of Jonathan "JD" Danylko

Jonathan Danylko is a web architect and entrepreneur who's been programming for over 25 years. He's developed websites for small, medium, and Fortune 500 companies since 1996.

He currently works at Insight Enterprises as an Principal Software Engineer Architect.

When asked what he likes to do in his spare time, he replies, "I like to write and I like to code. I also like to write about code."

comments powered by Disqus