A couple of months ago I received a license for NDepend to evaluate its usefulness. I was already convinced that NDepend is a very useful tool. But up to now, I hadn’t put NDepend to good use in a way that I could blog about it.
Today I decided to bite the bullet and put my own pet project FlickrMetadataSynchr up for analysis. Its source code is available on CodePlex.
NDepend analyses managed code for several quality aspects, like cyclomatic complexity, coupling and unused code. In a way it resembles FxCop, but it also does a lot more in terms of reporting. NDepend also is a lot more flexible in letting you query your code base. For this it uses its own SQL variant called Code Query Language (CQL). For example, you could enter this query into the tool
SELECT METHODS WHERE NbLinesOfCode > 30 AND IsPublic
and NDepend will show you all public methods whose number of lines of code exceeds 30.
Just by using the standard settings, NDepend gives you truckloads of information that point to areas with potential code smell. The report has inline comments that explain why it selects stuff and points out possible false positives for which it is okay to ignore the warning.
You can find my NDepend results here if you want to see what such a report looks like.
Starting with those results from top to bottom, I started refactoring my code to improve the quality. For example, splitting up methods to:
- Reduce cyclomatic complexity
- Reduce the number of IL instructions in a method
- Reduce the number of local variables in a method
- Increase the comment to code ratio
This should increase maintainability of the code.
Go check out this tool if you are interested in improving the quality of your .NET code or if you are tasked with reviewing somebody else’s code.