Izmjerite kvalitetu svog .Net koda pomoću NDependa

Procjena kvalitete koda aplikacije često je subjektivan proces. Zbog toga se okrećemo metrikama koda - kvantitativnim mjerenjima koja pružaju dragocjen uvid u kod naše aplikacije. Programeri mogu iskoristiti metrike koda da bi razumjeli kvalitetu koda, stekli ideju o potencijalnim problemima i utvrdili koje vrste i metode treba refaktorirati da bi se poboljšala kvaliteta.

Alati za statičku analizu koda koriste se za mjerenje kvalitete koda u aplikaciji bez potrebe za izvršenjem aplikacije. Za .Net je dostupno mnogo alata za statičku analizu koda. To uključuje FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend itd. Ovaj članak predstavlja raspravu o tome kako možemo koristiti NDepend za vizualizaciju kvalitete koda i usvajanje mjera za njegovo poboljšanje.

Što je NDepend i zašto ga koristiti?

NDepend je statički analizator koda koji se lijepo integrira s Visual Studiom i pruža vrijedne mjerne podatke za određivanje kvalitete koda. NDepend prikazuje ove mjerne podatke u obliku popisa, matrica, grafikona, mapa stabala i grafikona. Uz ove mjerne podatke, NDepend može analizirati vaš kôd i prijaviti kršenja u velikoj bazi podataka pravila.

NDepend sprema rezultate svake analize, tako da možete usporediti rezultate nakon što poboljšate pokrivenost koda ili kvalitetu koda. Može se pokrenuti i kao samostalna aplikacija i kao proširenje u Visual Studiju. A možete iskoristiti proširenje NDepend Azure DevOps da biste integrirali NDepend sa svojim projektima u Azureu.

Slijede neke od upečatljivih značajki NDependa:

  • Veliki skup pravila koda za provjeru usklađenosti
  • Mnogo grafikona i dijagrama za pregled metrike koda
  • Lijepo se integrira s Visual Studioom 2010, 2012, 2013, 2015 i 2017
  • Omogućuje vam istraživanje ovisnosti između modula
  • Pruža CQLinq (Upit koda preko LINQ-a) za prilagodbu analize
  • Mjeri pokrivenost kodom
  • Utvrđuje kôd koji je teško održavati i procjenjuje tehnički dug 
  • Izrađuje grafikone trendova

Početak rada s NDependom

Da biste započeli koristiti NDepend, morat ćete ga preuzeti i instalirati. Probnu kopiju NDependa možete preuzeti ovdje. Bit će pakiran u .zip datoteku. 

Nakon što raspakirate datoteku .zip instalacijskog programa NDepend, unutra ćete pronaći sljedeće datoteke:

  1. NDepend.Console - koristi se za integraciju s procesom izrade
  2. NDepend.PowerTools - zbirka statičkih analizatora otvorenog koda
  3. NDepend.VisualStudioExtension.Installer - instalira proširenje Visual Studio za NDepend
  4. VisualNDepend - GUI klijent za NDepend

Proširenje Visual Studio za NDepend možete instalirati na jedan od sljedeća dva načina:

  1. Pokrenite NDepend.VisualStudioExtension.Installer
  2. Pokrenite VisualNDepend i odaberite "Instaliranje proširenja Visual Studio"

Jednom kada se instalira Visual Studio Extension for NDepend, možete koristiti mjerne podatke, pravila, izvješća, grafikone, rezultate analizatora i alate unutar Visual Studio IDE-a. Također možete iskoristiti Visual NDepend za analizu svojih rješenja i projekata bez pokretanja Visual Studija.

Proširenje Visual Studio za NDepend dostupno je za Visual Studio 2010 putem Visual Studija 2017. Imajte na umu da ga koristim s Visual Studio 2017.

Analiza izvornog koda s NDependom

Da biste započeli analizu izvornog koda, možete kliknuti na „Analiziraj VS rješenja i VS projekte“. Ostale dostupne opcije su "Analizirajte .Net sklopove u mapi", "Analizirajte skup .Net sklopova" i "Usporedite 2 verzije baze koda." Ta posljednja opcija omogućuje vam usporedbu dvije gradnje - lijepa značajka!

Radi jednostavnosti, koristit ću izvorni kod iz jednog od mojih nedavnih članaka ovdje ("Kako koristiti Lamar u ASP.Net Core"). Jednom kada kliknete na „Analiziraj VS rješenja i VS projekte“, prikazat će se novi prozor kao što je prikazano na slici 1 dolje.

Sada možete kliknuti na "Pregledaj" i odrediti datoteku rješenja projekta koji želite da NDepend analizira.

Na kraju, kliknite na „Analizirajte jedan .Net sklop“ da biste započeli analizu kao što je prikazano na slici 3 dolje.

Ovo će pokrenuti analizu koda na odabranom projektu. Kada je analiza završena, NDepend će prikazati prozor sa sljedećim opcijama:

  • Pogledajte nadzornu ploču NDepend
  • Prikaži interaktivni grafikon NDepend
  • Pravila koda preglednika NDepend
  • Zatvorite dijaloški okvir

Odaberite da pregledamo NDepend nadzornu ploču. Evo kako izgleda izlaz: 

NDepend vam prikazuje retke koda, informacije o vrstama, dugu, komentare u izvornom kodu, podatke o pokrivenosti, složenost metoda, ulaze u kvalitetu i pravila koja su prekršena i druga pitanja.

Značajke NDepend

Graf ovisnosti i matrica ovisnosti

NDepend vam također prikazuje graf ovisnosti i matricu ovisnosti vašeg koda. Dok prva pruža grafički prikaz ovisnosti u vašem projektu, druga pruža tablični prikaz vašeg koda organiziranog prema ovisnostima o imenskim prostorima i vrstama.

Grafikoni trendova

Grafikoni trendova dostupni su na nadzornoj ploči. Te grafikone pružaju pregled kako se kvaliteta izvornog koda projekta mijenjala tijekom vremena. Također možete stvoriti vlastite prilagođene grafikone trendova.

Ciklomatična složenost

Ciklomatična složenost kvantitativna je mjera linearno neovisnih putova u izvornom kodu koji vam mogu pomoći da razumijete složenost vašeg programa i poboljšate pokrivenost koda. Možete iskoristiti NDepend za analizu ciklomatske složenosti u kodu vaše aplikacije. Više o ciklomatičkoj složenosti možete pročitati u ovom članku.

Upiti pomoću CQLinq-a

CQLinq je jedna od najupečatljivijih značajki NDependa. CQLinq vam omogućuje postavljanje upita .Net kodu pomoću LINQ-a. Možete iskoristiti CQLinq za ispitivanje duga, problema, pravila i kvalitetnih ulaza.

Pogledajmo primjer. Sljedeći CQLinq upit prikazuje nazive metoda i ciklomatičku složenost neastraktnih metoda koje imaju ciklomatičku složenost veću od 20, poredane prema padajućem redoslijedu vrijednosti ciklomatične složenosti.

od m u Primjeni.Metode

gdje je m.CyclomaticComplexity> = 20 &&! m.IsApstrakt

poredak prema m.CyclomaticComplexity silazno

odaberite novo {m, m.CyclomaticComplexity}

Evo još jednog primjera upita CQLinq. Ovaj kad se izvrši prikazat će imena metoda koje imaju više od 100 redaka koda.

od m u Metodama gdje m.NbLinesOfCode> 100 odabire m

Da biste saznali više o CQLinqu, ovdje možete pogledati dokumentaciju o NDependu. 

NDepend je alat za statičku analizu koda koji vam može pružiti dragocjen uvid u kôd vaše aplikacije. NDepend možete pokrenuti kao samostalnu aplikaciju ili integriranu u Visual Studio. Iako NDepend nije besplatan, ima povoljne cijene s obzirom na njegove moćne mogućnosti i dostupan je za sve najnovije verzije Visual Studija.

Ako želite izvrstan resurs za učenje NDependa, toplo preporučujem tečaj Pluralsight "Practical NDepend" Erica Dietricha.