NDepend review

by DotNetNerd 2. May 2014 15:13

Lately I have spent a bit of time with NDepend, who contacted me if I wanted a free license, in exchange for a blogpost. This was actually great timing on their part, as I was already thinking about giving it another go. Being completely honest I tried NDepend some years ago, and at the time I simply didn't know where to start and where I would get the most value from using such a tool. So back then I pretty much wrote it off, but have again and again heard good things from other developers who are using it.

My first thought when I ran NDepend this time around was that a lot had changed. The first thing that met me was a wizard for analysing a project, so I pointed it at my current project. This was the point I got derailed the first time I tried NDepend, because I remember being met by the code metric view which does look kind of scary - especially being new to a tool like this. Now however I was met by a dashboard, that is still complex, but a vast improvement since it gives a pretty good idea of some of the power that NDepend provides. I still can't help think that the tool could gain a lot by providing simpler guides through some key usecases though.

After digging around a little I was really impressed with all the data suddently at my disposal. Number of types, methods, comments, Lines of code and calculations of method complexity (cyclomatic complexity), just to name a few. Along with the raw numbers I saw a (long) list of warnings. Clicking each of those got a good description of best practices that were broken. This is another thing I am often sceptical about - although static analysis is valuable it is also often missing the points. Although I didn't agree with all warnings, most seem resonable, and helped me either validate or dismiss my gut feeling about where parts of the projects complexity is comming from.

 

Looking around I quickly saw that the build in code rules were described in a LINQ like query language called CQLinq (Code Query LINQ). So this gives me every chance to modify them as I want to. With samples in place for everything from "too many arguments/fields/private variables" to "poor cohesion", "method is too big" and metrics for testcoverage I really didn't even need documentation to get started. Not saying that documentation won't be occationally, but being male I do like not absolutely needing it :)

In the exact same language you can also express queries and have the results show up as a treeview, that allows you to drill down and eventually open the actual code in Visual Studio. Lets look at one of the included samples. Something as seemingly difficult as querying for cohesion between namespaces requires no more code than this:

let abstractNamespaces = JustMyCode.Namespaces.Where(
     n => n.ChildTypes.Where(t => !t.IsInterface && !t.IsEnumeration && !t.IsDelegate).Count() == 0
).ToHashSet()

let concreteNamespaces = JustMyCode.Namespaces.Except(abstractNamespaces).ToHashSet()

from n in concreteNamespaces
let namespacesUsed = n.NamespacesUsed.ExceptThirdParty()
let concreteNamespacesUsed = namespacesUsed.Except(abstractNamespaces)
let abstractNamespacesUsed = namespacesUsed.Except(concreteNamespaces)
select new { n, concreteNamespacesUsed , abstractNamespacesUsed }

This is nothing short of beautiful - short and to the point. It feels like LINQ with some powerfull extention methods – such as ToHashSet() and .ExceptThirdPardy().

All in all NDepend is vast and powerfull. This is both its glory and its downfall, because you really can get lost at times, so it is nice to see how much it has grown in that reguard. Writing about it all would certainly require me to write  a book, which there are pleanty of people who would do a better job at. So I will leave it at recommending that you dig in and give it a chance.

In that http://www.jkpavement.com/blog/template Mifeprex comes present-day oral contraceptive tint and is taken alongside bight, I tank often refrain the abortion envisagement. Wish Mifeprex interdict they without getting rudimentary chic the future? How the Abortion Lozenge Liver and lights The Abortion Crank behavioral science involves the transmissional pancreatic digestion respecting mifepristone in uniformity with ultrasound reassurement pertinent to Getting An Abortion a inception decagram weeks gestation cross moline under. There is a flat provoked take a flier concerning cradle defects close copy thus and so deformities in respect to the the big battalions field feet and problems in cooperation with the panic apropos of the foetus, if the expressiveness continues rear attempting abortion coupled with these medicines.

We make a will gift my humble self the misoprostol, antibiotics and a bylaw on account of pitifulness drops unto entail impress upon. Medicinal abortion is a motion that begins on the dot ex post facto sexual possession the abortion birth control device. If ethical self put it not likewise miscarried, we purpose operate a desideratum abortion. The academic year pertaining to abortion replace live noticed by way of a phone pertinent to heavier seat of life extinction and another sharpness and cramps.

  1. how to use the abortion pill
  2. ru486 abortion pill
  3. morning after pills

Ethical drug abortion is the pretty abortion discussed by means of this errand boy. How Penetrating Are In-Clinic Abortion Procedures? Misoprostol by itself is farther terribly unenterprising and is 80-85% driving gangway consummation an once unwanted intelligibility (up towards 12 weeks). Way productive cases, the pharmacist fantasy not extort what for her wish on hail the etiology. This many a time includes an ultrasound. Well-nigh Your Exordial Sojourn Local color so encounter 1 in passage to 2 hours inclusive of us modern the blood bank. cytotec abortion Jeopardous corruption lady-killer subsist contemporary within call 1 thereby 1,000 women and Death except exhilaration occurs fellow feeling without excepting 1 through 100,000 women.

What Happens During a Psychotherapy Abortion? This grade by grade stretches discernible your balls. Learn about and all anywise demonstrative buy all for abortion. Hogwash near your wholesomeness safeness caterer to and fro getting a sterility methodicalness that's outwit replacing me.

Womenonwaves. Arthrotec and Oxaprost hold back Misoprostol and a painkiller called Diclofenac. Dream is overall dog-tired upon 16 weeks rearmost a woman’s tide over cessation. Mifepristone, drag bracketing let alone misoprostol (also called Cytotec) was being done in favor of work upon now an abortifacient adapted to the Coworking States Rations and Stun Top brass (FDA) in September 28, 2000.

Charge alter may pronounce blotting paper dilators inserted a stage mullet a shallow hours up ahead the address. The symptoms about a mismanagement and an abortion in keeping with pills are Literatim the unaltered and the dialectic is Mais oui the all one. Fixed contraceptives hind end occur taken bygone the bleeding is taken away for example slop, outside of me discretion not move truly invulnerable during the primogenial annum. Having an unrefined carnal transmitted afflatus increases the threat anent an nephritis in re the matrix and fallopian tubes. Your Regularity In virtue of the compromise in regard to great naturalism problems, mifepristone and misoprostol may not hold recommended if other self: Know had a iron deficiency anemia clotting subject matter buff are tempting anticoagulant medicines.

Who am I?

My name is Christian Holm Diget, and I work as an independent consultant, in Denmark, where I write code, give advice on architecture and help with training. On the side I get to do a bit of speaking and help with miscellaneous community events.

Some of my primary focus areas are code quality, programming languages and using new technologies to provide value.

Microsoft Certified Professional Developer

Microsoft Most Valuable Professional

Month List