I've just downloaded NDepend for the first time and I'm going to make notes here as I work my way through it. Please note that I'm a complete beginner with the tool so this is first impressions only, not a comprehensive review.
I've heard lots about the tool and seen lots of interesting posts on what it does, but have never really been sure if it would give me any value. My first concern looking through Patrick's blog is that there are a lot of crazy numbers, graphs and blobs of something going on. It doesn't seem very approachable at first glance, let's see how it works out.
The .zip file doesn't contain an installer which always makes me wonder where to put it, I'm not sure if that's a good or a bad thing. I watched a quick demo but I like to dive right in so I'm ignoring the documentation for now. I've got a nice small project I've recently started so I'll drop in the .exe and see what it says...
Loading my .exe I get a screen filled with lots of, er, stuff. I should point out that I'm not looking for any particular piece of information here, I'm looking to see what the tool can do for me and apparently that's a lot. Having a quick scan around I see this in the lower right:
That's surprising. I don't comment very heavily so I would expect a lot more complaints! Apparently the filter ignores small methods which makes sense. Opening up the method in Visual Studio shows that it doesn't have any comments at all. A quick refactor breaks the method in two using the method name to explain what's going on.
I jump back to NDepend to see what it says but have a mouse spasm and drag one of the many panels out of place and can't figure out how to get it back where it was. Fortunately the View menu comes to the rescue with Reset Views. I run the analysis again and it takes 15 seconds, which seems a bit long for such a small project, but being in a malnourished VM it's not a very fair measurement.
The warning is gone, my code is cleaner, one point for NDepend.
I take NDepend's point back for the bad pun, this panel looks interesting though:
This looks a lot like FxCop and many of the rules are the same. Looking through the rules it seems I'm going to need to customise them heavily to suit my code, the first things I see are:
My dependency matrix is far to small to be interesting at this stage so I'm not spending any time with it, everything seems good so far though. There's this crazy thing with the blobs but it's hard to see what it actually tells me and I only have 30 or so blobs so it can wait. I've got features to build so that's all for today.
First impressions? There's a lot here and it's going to take time to figure it all out. I can see real value in using it to maintain the quality of large code bases, especially where teams are involved. For the little project I'm working on right now it's a lot to take in and I don't know if it will work out, perhaps it will just help keep me honest for the moment.
Next time I want to clean up those CQL queries to see if I can get all the lights to go green, then maybe see if I can get something useful out of those... blobs.