Kodmåttvärden

Den ökade komplexiteten i moderna program ökar också svårigheten att göra koden tillförlitlig och underhållsbar. Kodmått är en uppsättning programvarumått som ger utvecklare bättre insikt i koden de utvecklar. Genom att dra nytta av kodmått kan utvecklare förstå vilka typer eller metoder som ska omarbetas eller testas mer noggrant. Utvecklingsteam kan identifiera potentiella risker, förstå projektets aktuella tillstånd och spåra förloppet under programvaruutvecklingen.

Utvecklare kan använda Visual Studio för att generera kodmåttdata som mäter komplexiteten och underhållsbarheten för deras hanterade kod. Kodmåttdata kan genereras för en hel lösning eller ett enda projekt.

Information om hur du genererar kodmåttdata i Visual Studio finns i How to: Generate code metrics data (Så här genererar du kodmåttdata).

Programvarumätningar

I följande lista visas de kodmåttresultat som Visual Studio beräknar:

  • Underhållsindex – Beräknar ett indexvärde mellan 0 och 100 som representerar den relativa lättheten att underhålla koden. Ett högt värde innebär bättre underhåll. Färgkodade klassificeringar kan användas för att snabbt identifiera felpunkter i koden. Ett grönt omdöme är mellan 20 och 100 och anger att koden har god underhållbarhet. Ett gult omdöme är mellan 10 och 19 och anger att koden är måttligt underhållsbar. Ett rött omdöme är ett omdöme mellan 0 och 9 och anger låg underhållbarhet. Mer information finns i Indexintervall för underhåll och betydelse.

  • Cyklomatisk komplexitet – Mäter kodens strukturella komplexitet. Det skapas genom att beräkna antalet olika kodsökvägar i programmets flöde. Ett program som har ett komplext kontrollflöde kräver fler tester för att uppnå bra kodtäckning och är mindre underhållsbart. Mer information finns i Cyklomatisk komplexitet.

  • Arvsdjup – Anger antalet olika klasser som ärver från varandra, hela vägen tillbaka till basklassen. Arvsdjup liknar klasskoppling eftersom en ändring i en basklass kan påverka någon av dess ärvda klasser. Ju högre det här talet är, desto djupare arv och desto högre är risken för att basklassändringar resulterar i en icke-bakåtkompatibel ändring. För Arvsdjup är ett lågt värde bra och ett högt värde är dåligt. Mer information finns i Arvsdjup.

  • Klasskoppling – Mäter kopplingen till unika klasser via parametrar, lokala variabler, returtyper, metodanrop, generiska instansier eller mallinstansieringar, basklasser, gränssnittsimplementeringar, fält som definierats för externa typer och attributdekoration. Bra programvarudesign avgör att typer och metoder ska ha hög sammanhållning och låg koppling. Hög koppling indikerar en design som är svår att återanvända och underhålla på grund av dess många beroenden på andra typer. Mer information finns i Klasskoppling.

  • Rader med källkod – Anger det exakta antalet källkodsrader som finns i källfilen, inklusive tomma rader. Det här måttet är tillgängligt från och med Visual Studio 2019 version 16.4 och Microsoft.CodeAnalysis.Metrics (2.9.5).

  • Rader med körbar kod – Anger det ungefärliga antalet körbara kodrader eller åtgärder. Det här är antalet åtgärder i körbar kod. Det här måttet är tillgängligt från och med Visual Studio 2019 version 16.4 och Microsoft.CodeAnalysis.Metrics (2.9.5). Värdet är vanligtvis en nära matchning till föregående mått, Kodrader, som är det MSIL-instruktionsbaserade måttet som används i äldre läge.

Anonyma metoder

En anonym metod är bara en metod som inte har något namn. Anonyma metoder används oftast för att skicka ett kodblock som en delegatparameter. Kodmåttresultat för en anonym metod som deklareras i en medlem, till exempel en metod eller accessor, är associerade med den medlem som deklarerar metoden. De är inte associerade med den medlem som anropar metoden.

Genererad kod

Vissa programvaruverktyg och kompilatorer genererar kod som läggs till i ett projekt och som projektutvecklaren antingen inte ser eller inte bör ändra. För det mesta ignorerar kodmått genererad kod när den beräknar måttvärdena. På så sätt kan måttvärdena återspegla vad utvecklaren kan se och ändra.

Kod som genereras för Windows Forms ignoreras inte eftersom det är kod som utvecklaren kan se och ändra.