Cenni preliminari sulla metrica del codice
Aggiornamento: novembre 2007
La metrica del codice è un insieme di misure del software in grado di fornire agli sviluppatori una migliore comprensione del codice che stanno sviluppando. Sfruttando la metrica del codice, è possibile capire quali tipi e/o metodi rielaborare o testare in modo più approfondito. I team di sviluppo possono così identificare rischi potenziali, comprendere lo stato corrente di un progetto e tenere traccia dei progressi durante lo sviluppo del software.
Misurazioni del software
Nell'elenco riportato di seguito vengono illustrati i risultati della metrica codice calcolati da Visual Studio:
Indice di gestibilità - Calcola un valore di indice tra 0 e 100 che rappresenta la relativa semplicità di gestione del codice. Un valore alto indica una migliore gestibilità. Il calcolo è basato sul volume halstead, sulla complessità ciclomatica e sulle righe del codice. È possibile utilizzare le classificazioni codificate con colori differenti per identificare rapidamente i punti critici del codice. Una classificazione verde è compresa tra 20 e 100 e indica che il codice ha una buona gestibilità. Una classificazione gialla è compresa tra 10 e 19 e indica che il codice ha una discreta gestibilità. Una classificazione rossa è compresa tra 0 e 9 e indica una bassa gestibilità.
Complessità ciclomatica - Misura la complessità strutturale del codice. Viene creata calcolando il numero di percorsi di codice diversi nel flusso del programma, ad esempio blocchi if, istanze case dell'istruzione switch, cicli do, while, foreach e for, aggiungendo 1 al totale. Un programma con un flusso di controllo complesso richiederà più unit test per raggiungere un buon code coverage e sarà meno gestibile.
Profondità dell'Ereditarietà - Indica il numero di definizioni della classe che estendono alla radice della gerarchia di classi. Più la gerarchia è profonda e più potrebbe diventare difficile capire dove i particolari metodi e campi siano definiti o/e ridefiniti. A livello di classe, il numero viene creato calcolando il numero dei tipi al di sopra del tipo nella struttura a albero di ereditarietà a partire da 0 ed escludendo le interfacce. A livello di spazio dei nomi e di progetto, il calcolo è costituito dalla profondità di ereditarietà più elevata di tutti i tipi all'interno dello spazio dei nomi o del progetto.
Accoppiamento di classi - Misura l'accoppiamento di classi univoche tramite parametri, variabili locali, tipi restituiti, chiamate al metodo, creazioni di istanze generiche o sulla base di modelli, classi di base, implementazioni dell'interfaccia, campi definiti in base a tipologie esterne e decorazione dell'attributo. Il calcolo esclude i tipi primitivi e i tipi incorporati, ad esempio int32, string e object. Secondo i canoni della progettazione di software,tipologie e metodi devono avere coesione alta e accoppiamento basso. Un alto indice di accoppiamento è indice di una progettazione difficile da riutilizzare e gestire, a causa delle molte interdipendenze con altre tipologie.
Righe di Codice - Indica il numero approssimativo di righe nel codice. Il conteggio è basato sul codice IL e non corrisponde perciò al numero esatto di righe nel file di codice sorgente. Il calcolo esclude lo spazio vuoto, i commenti, parentesi graffe e le dichiarazioni di membri, tipi e spazi dei nomi. Un conteggio molto alto potrebbe indicare che un tipo o metodo sta tentando di fare troppo lavoro e deve essere suddiviso. Potrebbe anche indicare che il tipo o il metodo potrebbe essere di difficile gestione.
Metodi anonimi
Un metodo anonimo è appunto un metodo privo di nome. I metodi anonimi vengono usati il più delle volte per far passare un blocco di codice come parametro di delegato. I risultati delle metriche per un metodo anonimo dichiarato in un membro specifico,come ad esempio un metodo o una funzione di accesso, vengono associati al membro che dichiara il metodo. Non vengono invece associati al membro che chiama il metodo.
Per ulteriori informazioni sulle modalità con cui la metrica del codice tratta i metodi anonimi, vedere Metodi anonimi e analisi del codice.
Codice generato
Tramite alcuni strumenti di software e compilatori, viene generato del codice aggiuntivo per i progetti che lo sviluppatore del progetto non vede o non deve modificare. In genere, la metrica del codice ignora il codice generato durante il calcolo dei valori delle metriche. In questo modo, consente ai valori delle metriche di riflettere ciò che lo sviluppatore può vedere e modificare.
Il codice generato per le Windows Form non viene ignorato, perché è codice che lo sviluppatore può vedere e modificare.
Finestra Risultati metrica codice
Dopo che il codice è stato analizzato in Visual Studio, i risultati vengono mostrati in Risultati metrica codice. Nella finestra sono disponibili una barra degli strumenti in alto e colonne per la visualizzazione dei risultati calcolati.
La colonna Gerarchia contiene una visualizzazione della struttura ad albero della gerarchia del codice, che è possibile espandere o comprimere per visualizzare il livello di dettaglio di cui si necessita. Nelle colonne rimanenti vengono visualizzati i risultati calcolati. È possibile nascondere o disporre le colonne del risultato come si preferisce. Per ulteriori informazioni, vedere la classe Procedura: aggiungere, rimuovere o ridisporre le colonne.
La colonna Gestibilità contiene un'icona oltre al risultato numerico. Un'icona verde indica un livello di gestibilità relativamente alto. Un'icona gialla indica un grado moderato di gestibilità. Un'icona rossa indica bassa gestibilità e un potenziale punto problematico. Questi indicatori di colore corrispondono a categorie di gravità utilizzate dalla regola FxCop AvoidUnmaintainableCode. Questa regola genera un errore se l'indice di gestibilità è inferiore a 10, un avviso se l'indice è compreso tra 10 e 20, e né un errore né un avviso se l'indice è superiore a 20. L'indice di gestibilità è una sintesi di tre metriche: complessità ciclomatica, righe di codice e complessità computazionale. I valori non sono espressi in unità.
È possibile ordinare i risultati della finestra in base a ognuna di queste colonne. A tale scopo, fare clic sull'intestazione della colonna. Facendo nuovamente clic sull'intestazione di colonna, la finestra verrà riordinata in ordine inverso.
Vedere anche
Altre risorse
Misurazione della complessità e della gestibilità del codice gestito