Ho pubblicato una seconda serie di informazioni sulla nuova versione di Visual Studio Team System 2010.
Con VSTS 2008 è arrivato un nuovo sistema di calcolo sulla bontà della nostra soluzione software: è sufficiente eseguire Tasto Dx su un progetto e scegliere Calculate Code Metrics.
Il tutto viene riepilogato in questa tabellina per ogni classe/metodo (esportabili in excel)
Cosa significano questi valori ?
Maintainability Index 0 – 100 (più alto = meglio)
Basato su Halstead Volume, Cyclomatic Complexity e Lines of Code
Cyclomatic Complexity
Conta i Code Path (if, while, switch, for....)
Se troppo alto servono più unit test per arrivare ad una buona copertura del codice: in pratica il codice risulta meno manutenibile
Depth of Inheritance
Rappresenta il livello gerarchico delle classi.
Se troppo alto diventa difficile capire da dove arrivano le “cose” ereditate
Class Coupling
Good Software is high coesive and low coupling
Se alto indica troppe interdipenze fra tipi
Il calcolo non considera i tipi built-in
Lines of Code
Calcolo approssimativo basato su IL
Non conta commenti, dichiarazioni di tipi/membri/namespace
Numero alto: forse il metodo o la classe fa troppo
Valori corretti
Anche se non esiste una regola applicabile a tutti gli scenari queste le indicazioni di massima.
Le indicazioni arrivano da FxCop (Code Analysis in Visual Studio) per cui esistono questi valori massimi. Se superari il Code Analysis emette un warning.
Accanto ad ogni elemento il codice la regola relativa.
Depth of Inheritance : CA1501 > 5
Complexity: CA1502 > 25
Maintainability Index: CA1505 > 20
Class Coupling: CA1506
> 80 per classi
> 30 per metodi
Non si può impedire un check-in sui calcoli effettuati da Code Metrics, esistendo le 4 regole sopra citate (sono sotto Maintainability Rules) si possono impostare le ckeck-in policy comunque.
Hope useful
Ho pubblicato questo mini articolo, a cui seguiranno altri due o tre appuntamenti su Visual Studio Team System 2010.
http://blogs.devleap.com/articolidevleap/archive/2008/10/17/visual-studio-team-system-2010-primo-contatto.aspx