Valori delle metriche del codice

La maggiore complessità delle applicazioni software moderne aumenta anche la difficoltà di rendere affidabile e gestibile il codice. 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 le metriche del codice, gli sviluppatori possono comprendere quali tipi e/o metodi devono essere rielaborati o testati più accuratamente. I team di sviluppo possono identificare i potenziali rischi, comprendere lo stato corrente di un progetto e tenere traccia dello stato di avanzamento durante lo sviluppo del software.

Gli sviluppatori possono usare Visual Studio per generare dati delle metriche del codice che misurano la complessità e la gestibilità del codice gestito. I dati delle metriche del codice possono essere generati per un'intera soluzione o per un singolo progetto.

Per informazioni su come generare dati delle metriche del codice in Visual Studio, vedere Procedura: Generare dati delle metriche del codice.

Misurazioni software

L'elenco seguente mostra i risultati delle metriche del codice calcolati da Visual Studio:

  • Indice di manutenibilità: calcola un valore di indice compreso tra 0 e 100 che rappresenta la facilità relativa di gestione del codice. Un valore elevato significa una migliore manutenibilità. Le classificazioni codificate a colori possono essere usate per identificare rapidamente i problemi nel codice. Una classificazione verde è compresa tra 20 e 100 e indica che il codice ha una buona manutenibilità. Una classificazione gialla è compresa tra 10 e 19 e indica che il codice è moderatamente gestibile. Una classificazione rossa è una valutazione compresa tra 0 e 9 e indica una bassa manutenibilità. Per altre informazioni, vedere Intervallo di indici di gestibilità e significato.

  • Complessità ciclomatica : misura la complessità strutturale del codice. Viene creato calcolando il numero di percorsi di codice diversi nel flusso del programma. Un programma con flusso di controllo complesso richiede più test per ottenere una buona code coverage ed è meno gestibile. Per altre informazioni, vedere Complessità ciclomatica.

  • Profondità dell'ereditarietà : indica il numero di classi diverse che ereditano l'una dall'altra, fino alla classe base. La profondità dell'ereditarietà è simile all'accoppiamento di classi in quanto una modifica in una classe di base può influire su qualsiasi classe ereditata. Maggiore è questo numero, maggiore è l'ereditarietà e maggiore è il potenziale di modifiche della classe di base per generare una modifica che causa un'interruzione. Per La profondità dell'ereditarietà, un valore basso è buono e un valore elevato non è valido. Per altre informazioni, vedere Profondità dell'ereditarietà.

  • Accoppiamento classi: misura l'accoppiamento a classi univoche tramite parametri, variabili locali, tipi restituiti, chiamate di metodo, istanze di modelli o generiche, classi di base, implementazioni dell'interfaccia, campi definiti su tipi esterni e decorazione di attributi. Una buona progettazione software determina che i tipi e i metodi devono avere una coesione elevata e un accoppiamento basso. L'accoppiamento elevato indica una progettazione difficile da riutilizzare e gestire a causa delle numerose interdipendenze su altri tipi. Per altre informazioni, vedere Accoppiamento classi.

  • Righe di codice sorgente : indica il numero esatto di righe di codice sorgente presenti nel file di origine, incluse le righe vuote. Questa metrica è disponibile a partire da Visual Studio 2019 versione 16.4 e Microsoft.CodeAnalysis.Metrics (2.9.5).

  • Righe di codice eseguibile : indica il numero approssimativo di righe o operazioni di codice eseguibile. Si tratta di un conteggio del numero di operazioni nel codice eseguibile. Questa metrica è disponibile a partire da Visual Studio 2019 versione 16.4 e Microsoft.CodeAnalysis.Metrics (2.9.5). Il valore è in genere una corrispondenza vicina alla metrica precedente, Righe di codice, ovvero la metrica basata su istruzioni MSIL usata in modalità legacy.

Metodi anonimi

Un metodo anonimo è solo un metodo senza nome. I metodi anonimi vengono usati più di frequente per passare un blocco di codice come parametro delegato. I risultati delle metriche del codice per un metodo anonimo dichiarato in un membro, ad esempio un metodo o una funzione di accesso, sono associati al membro che dichiara il metodo . Non sono associati al membro che chiama il metodo .

Codice generato

Alcuni strumenti software e compilatori generano codice aggiunto a un progetto e che lo sviluppatore del progetto non vede o non deve cambiare. Per lo più, le metriche del codice ignorano il codice generato quando calcola i valori delle metriche. Ciò consente ai valori delle metriche di riflettere ciò che lo sviluppatore può visualizzare e modificare.

Il codice generato per Windows Form non viene ignorato, perché è codice che lo sviluppatore può visualizzare e modificare.