Programmering

Mål kvaliteten af ​​din. Net-kode med NDepend

At vurdere kvaliteten af ​​en applikations kode er ofte en subjektiv proces. Derfor vender vi os til kodemålinger - kvantitative målinger, der giver værdifuld indsigt i vores applikations kode. Udviklere kan drage fordel af kodemetrik til at forstå kvaliteten af ​​koden, få en idé om de potentielle problemer og identificere, hvilke typer og metoder der skal omformuleres for at forbedre kvaliteten.

Værktøjer til statisk kodeanalyse bruges til at måle kvaliteten af ​​koden i en applikation uden at skulle udføre applikationen. Der er mange statiske kodeanalyseværktøjer tilgængelige til .Net. Disse inkluderer FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend osv. Denne artikel præsenterer en diskussion af, hvordan vi kan bruge NDepend til at visualisere kodekvalitet og vedtage foranstaltninger til at forbedre den.

Hvad er NDepend og hvorfor bruge det?

NDepend er en statisk kodeanalysator, der integreres pænt med Visual Studio og giver værdifulde målinger til bestemmelse af kodekvalitet. NDepend viser disse metrics i form af lister, matrixer, grafer, trækort og diagrammer. Sammen med disse metrics kan NDepend analysere din kode og rapportere overtrædelser mod en stor database med regler.

NDepend gemmer resultaterne af hver analyse, så du kan sammenligne resultaterne, når du har forbedret kodedækningen eller kodekvaliteten. Det kan køres både som et enkeltstående program og som en udvidelse i Visual Studio. Og du kan drage fordel af NDepend Azure DevOps-udvidelsen til at integrere NDepend med dine projekter i Azure.

Følgende er nogle af de slående træk ved NDepend:

  • Stort sæt koderegler til kontrol af overholdelse
  • Mange diagrammer og diagrammer til visning af kodemetrikker
  • Integreres pænt med Visual Studio 2010, 2012, 2013, 2015 og 2017
  • Gør det muligt for dig at udforske afhængigheder mellem moduler
  • Tilbyder CQLinq (Code Query over LINQ) til at tilpasse analyse
  • Måler kodedækning
  • Identificerer svær at vedligeholde kode og estimerer teknisk gæld
  • Opretter trendkort

Kom godt i gang med NDepend

For at komme i gang med at bruge NDepend skal du downloade og installere en kopi af det. Du kan downloade en prøvekopi af NDepend herfra. Den pakkes som en .zip-fil.

Når du har udpakket NDepend installations-zip-filen, finder du følgende filer inde:

  1. NDepend.Console - bruges til integration med byggeprocessen
  2. NDepend.PowerTools - en samling af open source statiske analysatorer
  3. NDepend.VisualStudioExtension.Installer - installerer Visual Studio Extension til NDepend
  4. VisualNDepend - en GUI-klient til NDepend

Du kan installere Visual Studio-udvidelsen af ​​NDepend på en af ​​følgende to måder:

  1. Kør NDepend.VisualStudioExtension.Installer
  2. Kør VisualNDepend og vælg "Install Visual Studio Extension"

Når Visual Studio Extension for NDepend er installeret, kan du udnytte metrics, regler, rapporter, grafer, analyserresultater og værktøjer fra Visual Studio IDE. Du kan også drage fordel af Visual NDepend til at analysere dine løsninger og projekter uden at skulle starte Visual Studio.

Visual Studio-udvidelsen til NDepend er tilgængelig til Visual Studio 2010 gennem Visual Studio 2017. Bemærk, at jeg bruger det med Visual Studio 2017.

Analysering af kildekode med NDepend

For at begynde at analysere din kildekode kan du klikke på "Analyser VS-løsninger og VS-projekter." De andre tilgængelige indstillinger er "Analyser. Net-samlinger i mappe", "Analyser et sæt. Net-samlinger" og "Sammenlign 2 versioner af en kodebase." Den sidste mulighed lader dig sammenligne to builds - en god funktion!

For at gøre det nemmere vil jeg bruge kildekoden fra en af ​​mine seneste artikler her (“Sådan bruges Lamar i ASP.Net Core”). Når du klikker på "Analyser VS-løsninger og VS-projekter", vises et nyt vindue som vist i figur 1 nedenfor.

Du kan nu klikke på "Gennemse" og angive løsningsfilen for det projekt, du vil have NDepend til at analysere.

Til sidst skal du klikke på "Analyser en enkelt. Net-samling" for at starte analysen som vist i figur 3 nedenfor.

Dette kører en kodeanalyse på det valgte projekt. Når analysen er afsluttet, viser NDepend et vindue med følgende muligheder:

  • Se NDepend Dashboard
  • Vis NDepend Interactive Graph
  • Browser NDepend Code-regler
  • Luk dialogen

Lad os vælge at se NDepend dashboard. Sådan ser outputet ud:

NDepend viser dig kodelinjerne, oplysninger om typer, gæld, kommentarer i kildekoden, dækningsoplysninger, metodekompleksitet, kvalitetsporte og de regler, der er blevet overtrådt, og andre problemer.

NDepend funktioner

Afhængighedsgraf og afhængighedsmatrix

NDepend viser dig også en afhængighedsgraf og afhængighedsmatrix for din kode. Mens førstnævnte giver en grafisk visning af afhængighederne i dit projekt, giver sidstnævnte en tabelvisning af din kode organiseret efter afhængigheder på navneområder og typer.

Trendkort

Trendkort er tilgængelige i instrumentbrættet. Disse diagrammer giver et eksempel på, hvordan kvaliteten af ​​projektets kildekode har ændret sig over tid. Du kan også oprette dine egne tilpassede trendkort.

Cyklomatisk kompleksitet

Cyklomatisk kompleksitet er et kvantitativt mål for de lineært uafhængige stier i kildekoden, der kan hjælpe dig med at forstå kompleksiteten af ​​dit program og forbedre kodedækningen. Du kan drage fordel af NDepend til at analysere den cyklomatiske kompleksitet i din applikations kode. Du kan læse mere om cyklomatisk kompleksitet i denne artikel.

Forespørgsel ved hjælp af CQLinq

CQLinq er et af de mest slående træk ved NDepend. CQLinq giver dig mulighed for at forespørge .Net-kode ved hjælp af LINQ. Du kan drage fordel af CQLinq til at forespørge kodegæld, problemer, regler og kvalitetsporte.

Lad os se på et eksempel. Følgende CQLinq-forespørgsel viser metodens navne og cyklomatiske kompleksitet af ikke-abstrakte metoder, der har en cyklomatisk kompleksitet større end 20, ordnet efter faldende rækkefølge af værdien af ​​cyklomatisk kompleksitet.

fra m i Application.Methods

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

rækkefølge efter m.CyclomaticComplexity faldende

vælg ny {m, m.CyclomaticComplexity}

Her er et andet eksempel på en CQLinq-forespørgsel. Denne, når den udføres, viser navnene på de metoder, der har mere end 100 linjer kode.

fra m i Metoder, hvor m.NbLinesOfCode> 100 vælger m

For at lære mere om CQLinq, kan du henvise til NDepend-dokumentationen her.

NDepend er et statisk kodeanalyseværktøj, der kan give dig værdifuld indsigt i din applikations kode. Du kan køre NDepend som et enkeltstående program eller integreret i Visual Studio. Selvom NDepend ikke er gratis, er den til en rimelig pris i betragtning af dens stærke muligheder, og den er tilgængelig til alle nyere versioner af Visual Studio.

Hvis du vil have en god ressource til at lære NDepend, anbefaler jeg stærkt Pluralsight-kurset "Practical NDepend" af Eric Dietrich.