Programmering

Mål kvaliteten på .Net-koden din med NDepend

Å vurdere kvaliteten på programmets kode er ofte en subjektiv prosess. Dette er grunnen til at vi vender oss til kodemålinger - kvantitative målinger som gir verdifull innsikt i applikasjonens kode. Utviklere kan dra nytte av kodemålinger for å forstå kvaliteten på koden, få en ide om de potensielle problemene, og identifisere hvilke typer og metoder som må refaktoriseres for å forbedre kvaliteten.

Verktøy for statisk kodeanalyse brukes til å måle kvaliteten på koden i en applikasjon uten å måtte utføre applikasjonen. Det er mange verktøy for statisk kodeanalyse tilgjengelig for .Net. Disse inkluderer FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend, etc. Denne artikkelen presenterer en diskusjon om hvordan vi kan bruke NDepend til å visualisere kodekvalitet og vedta tiltak for å forbedre den.

Hva er NDepend og hvorfor bruke det?

NDepend er en statisk kodeanalysator som integreres fint med Visual Studio og gir verdifulle beregninger for å bestemme kodekvaliteten. NDepend viser disse beregningene i form av lister, matrikser, grafer, trekart og diagrammer. Sammen med disse beregningene kan NDepend analysere koden din og rapportere brudd på en stor database med regler.

NDepend lagrer resultatene for hver analyse, slik at du kan sammenligne resultatene etter at du har forbedret kodedekningen eller kodekvaliteten. Den kan kjøres både som et frittstående program og som en utvidelse i Visual Studio. Og du kan dra nytte av NDepend Azure DevOps-utvidelsen for å integrere NDepend med prosjektene dine i Azure.

Følgende er noen av de slående trekkene ved NDepend:

  • Stort sett med koderegler for å kontrollere etterlevelse
  • Mange diagrammer og diagrammer for visning av kodeverdier
  • Integreres fint med Visual Studio 2010, 2012, 2013, 2015 og 2017
  • Lar deg utforske avhengighet mellom moduler
  • Tilbyr CQLinq (Code Query over LINQ) for å tilpasse analysen
  • Måler kodedekning
  • Identifiserer vanskelig vedlikeholdskode og estimerer teknisk gjeld
  • Oppretter trendkart

Komme i gang med NDepend

For å komme i gang med å bruke NDepend, må du laste ned og installere en kopi av den. Du kan laste ned en prøvekopi av NDepend herfra. Den blir pakket som en .zip-fil.

Når du har pakket ut zip-filen for NDepend installer, finner du følgende filer inne:

  1. NDepend.Console - brukes til integrering med byggeprosessen
  2. NDepend.PowerTools - en samling statiske analysatorer med åpen kildekode
  3. NDepend.VisualStudioExtension.Installer - installerer Visual Studio Extension for NDepend
  4. VisualNDepend - en GUI-klient for NDepend

Du kan installere Visual Studio-utvidelsen av NDepend på en av følgende to måter:

  1. Kjør NDepend.VisualStudioExtension.Installer
  2. Kjør VisualNDepend og velg "Install Visual Studio Extension"

Når Visual Studio Extension for NDepend er installert, kan du utnytte beregninger, regler, rapporter, grafer, analysatorresultater og verktøy fra Visual Studio IDE. Du kan også dra nytte av Visual NDepend for å analysere løsningene og prosjektene dine uten å måtte starte Visual Studio.

Visual Studio Extension for NDepend er tilgjengelig for Visual Studio 2010 gjennom Visual Studio 2017. Vær oppmerksom på at jeg bruker den med Visual Studio 2017.

Analyserer kildekoden med NDepend

For å begynne å analysere kildekoden din, kan du klikke på "Analyser VS-løsninger og VS-prosjekter." De andre tilgjengelige alternativene er "Analyser. Net-samlinger i mappe", "Analyser et sett. Net-samlinger," og "Sammenlign to versjoner av en kodebase." Det siste alternativet lar deg sammenligne to bygninger - en fin funksjon!

For enkelhets skyld vil jeg bruke kildekoden fra en av de siste artiklene mine her (“Hvordan bruke Lamar i ASP.Net Core”). Når du klikker på “Analyser VS-løsninger og VS-prosjekter”, vises et nytt vindu som vist i figur 1 nedenfor.

Du kan nå klikke på "Bla gjennom" og spesifisere løsningsfilen til prosjektet du vil at NDepend skal analysere.

Til slutt klikker du på "Analyser en enkelt. Net-samling" for å starte analysen som vist i figur 3 nedenfor.

Dette vil kjøre en kodeanalyse på det valgte prosjektet. Når analysen er fullført, vil NDepend vise et vindu med følgende alternativer:

  • Vis NDependent Dashboard
  • Vis NDepend Interactive Graph
  • Nettleser NDepend Code Code
  • Lukk dialogboksen

La oss velge å se NDependent-dashbordet. Slik ser utgangen ut:

NDepend viser deg kodelinjene, informasjon om typer, gjeld, kommentarer i kildekoden, dekningsinformasjon, metodekompleksitet, kvalitetsporter og reglene som er brutt og andre problemer.

NDepend funksjoner

Avhengighetsgraf og avhengighetsmatrise

NDepend viser deg også en avhengighetsgraf og avhengighetsmatrise for koden din. Mens førstnevnte gir en grafisk oversikt over avhengighetene i prosjektet ditt, gir sistnevnte en tabellvisning av koden din organisert av avhengigheter av navneplasser og typer.

Trenddiagrammer

Trenddiagrammer er tilgjengelige i dashbordet. Disse diagrammene gir en forhåndsvisning av hvordan kvaliteten på prosjektets kildekode har endret seg over tid. Du kan også lage dine egne tilpassede trenddiagrammer.

Syklomatisk kompleksitet

Syklomatisk kompleksitet er et kvantitativt mål på de lineært uavhengige banene i kildekoden som kan hjelpe deg med å forstå kompleksiteten i programmet ditt og forbedre kodedekningen. Du kan dra nytte av NDepend for å analysere den syklomatiske kompleksiteten i programmets kode. Du kan lese mer om syklomatisk kompleksitet i denne artikkelen.

Spørring ved bruk av CQLinq

CQLinq er en av de mest slående egenskapene til NDepend. CQLinq lar deg spørre. Net-kode ved hjelp av LINQ. Du kan dra nytte av CQLinq for å spørre om gjeld, problemer, regler og kvalitetsporter.

La oss se på et eksempel. Følgende CQLinq-spørring viser metodenavnene og den syklomatiske kompleksiteten til ikke-abstrakte metoder som har en syklomatisk kompleksitet større enn 20, ordnet etter synkende rekkefølge av verdien av den syklomatiske kompleksiteten.

fra m i Søknad. Metoder

der m.CyclomaticComplexity> = 20 &&! m.IsAbstract

rekkefølge av m.CyclomaticComplexity synkende

velg ny {m, m.CyclomaticComplexity}

Her er et annet eksempel på et CQLinq-spørsmål. Denne, når den kjøres, viser navnene på metodene som har mer enn 100 kodelinjer.

fra m i Metoder der m.NbLinesOfCode> 100 velger m

For å lære mer om CQLinq, kan du se NDepend-dokumentasjonen her.

NDepend er et verktøy for statisk kodeanalyse som kan gi deg verdifull innsikt i programmets kode. Du kan kjøre NDepend som et frittstående program eller integrert i Visual Studio. Selv om NDepend ikke er gratis, er den rimelig med tanke på dens kraftige evner, og den er tilgjengelig for alle nyere versjoner av Visual Studio.

Hvis du vil ha en god ressurs for å lære NDepend, anbefaler jeg sterkt Pluralsight-kurset “Practical NDepend” av Eric Dietrich.

$config[zx-auto] not found$config[zx-overlay] not found