Misura la qualità del tuo codice .Net con NDepend

La valutazione della qualità del codice di un'applicazione è spesso un processo soggettivo. Questo è il motivo per cui ci rivolgiamo alle metriche del codice, misurazioni quantitative che forniscono informazioni preziose sul codice della nostra applicazione. Gli sviluppatori possono trarre vantaggio dalle metriche del codice per comprendere la qualità del codice, farsi un'idea dei potenziali problemi e identificare i tipi e i metodi da sottoporre a refactoring per migliorare la qualità.

Gli strumenti di analisi statica del codice vengono utilizzati per misurare la qualità del codice in un'applicazione senza dover eseguire l'applicazione. Sono disponibili molti strumenti di analisi del codice statico per .Net. Questi includono FxCop, StyleCop, ReSharper, CodeIt.Right, NDepend, ecc. Questo articolo presenta una discussione su come possiamo utilizzare NDepend per visualizzare la qualità del codice e adottare misure per migliorarlo.

Cos'è NDepend e perché usarlo?

NDepend è un analizzatore di codice statico che si integra perfettamente con Visual Studio e fornisce metriche preziose per determinare la qualità del codice. NDepend visualizza queste metriche sotto forma di elenchi, matrici, grafici, mappe ad albero e grafici. Insieme a queste metriche, NDepend può analizzare il codice e segnalare violazioni rispetto a un ampio database di regole.

NDepend salva i risultati di ogni analisi, così puoi confrontare i risultati dopo aver migliorato la copertura del codice o la qualità del codice. Può essere eseguito sia come applicazione autonoma che come estensione in Visual Studio. Inoltre, puoi sfruttare l'estensione NDepend Azure DevOps per integrare NDepend con i tuoi progetti in Azure.

Le seguenti sono alcune delle caratteristiche sorprendenti di NDepend:

  • Ampio set di regole del codice per verificare la conformità
  • Molti grafici e diagrammi per la visualizzazione delle metriche del codice
  • Si integra perfettamente con Visual Studio 2010, 2012, 2013, 2015 e 2017
  • Consente di esplorare le dipendenze tra i moduli
  • Fornisce CQLinq (Code Query over LINQ) per personalizzare l'analisi
  • Misura la copertura del codice
  • Identifica il codice di difficile manutenzione e stima il debito tecnico 
  • Crea grafici di tendenza

Iniziare con NDepend

Per iniziare a utilizzare NDepend, è necessario scaricarne e installarne una copia. Puoi scaricare una copia di prova di NDepend da qui. Verrà impacchettato come file .zip. 

Dopo aver decompresso il file .zip del programma di installazione NDepend, all'interno troverai i seguenti file:

  1. NDepend.Console: utilizzato per l'integrazione con il processo di compilazione
  2. NDepend.PowerTools - una raccolta di analizzatori statici open source
  3. NDepend.VisualStudioExtension.Installer: installa l'estensione di Visual Studio per NDepend
  4. VisualNDepend: un client GUI per NDepend

È possibile installare l'estensione Visual Studio di NDepend in uno dei due modi seguenti:

  1. Esegui NDepend.VisualStudioExtension.Installer
  2. Esegui VisualNDepend e seleziona "Installa estensione di Visual Studio"

Dopo aver installato Visual Studio Extension per NDepend, puoi sfruttare metriche, regole, report, grafici, risultati dell'analizzatore e strumenti dall'IDE di Visual Studio. Puoi anche sfruttare Visual NDepend per analizzare le tue soluzioni e progetti senza dover avviare Visual Studio.

L'estensione di Visual Studio per NDepend è disponibile per Visual Studio 2010 tramite Visual Studio 2017. Si noti che lo sto utilizzando con Visual Studio 2017.

Analisi del codice sorgente con NDepend

Per iniziare ad analizzare il codice sorgente, puoi fare clic su "Analizza soluzioni VS e progetti VS". Le altre opzioni disponibili sono "Analizza assembly .Net nella cartella", "Analizza un set di assembly .Net" e "Confronta 2 versioni di una base di codice". Quest'ultima opzione ti consente di confrontare due build: una bella funzionalità!

Per semplicità, userò il codice sorgente di uno dei miei articoli recenti qui ("Come usare Lamar in ASP.Net Core"). Dopo aver fatto clic su "Analizza soluzioni VS e progetti VS", verrà visualizzata una nuova finestra come mostrato nella Figura 1 di seguito.

È ora possibile fare clic su "Sfoglia" e specificare il file della soluzione del progetto che si desidera venga analizzato da NDepend.

Infine, fare clic su "Analizza un singolo assieme .Net" per avviare l'analisi come mostrato nella Figura 3 di seguito.

Questo eseguirà un'analisi del codice sul progetto selezionato. Quando l'analisi è completa, NDepend visualizzerà una finestra con le seguenti opzioni:

  • Visualizza NDepend Dashboard
  • Mostra grafico interattivo NDepend
  • Regole del codice dipendente dal browser
  • Chiudi la finestra di dialogo

Scegliamo di visualizzare il dashboard di NDepend. Ecco come appare l'output: 

NDepend mostra le righe di codice, le informazioni sui tipi, il debito, i commenti nel codice sorgente, le informazioni sulla copertura, la complessità del metodo, i quality gate, le regole che sono state violate e altri problemi.

Funzionalità NDepend

Grafico delle dipendenze e matrice delle dipendenze

NDepend mostra anche un grafico delle dipendenze e una matrice delle dipendenze del tuo codice. Mentre il primo fornisce una visualizzazione grafica delle dipendenze nel progetto, il secondo fornisce una visualizzazione tabulare del codice organizzata per dipendenze su spazi dei nomi e tipi.

Grafici di tendenza

I grafici delle tendenze sono disponibili nella dashboard. Questi grafici forniscono un'anteprima di come la qualità del codice sorgente del progetto è cambiata nel tempo. Puoi anche creare i tuoi grafici di tendenza personalizzati.

Complessità ciclomatica

La complessità ciclomatica è una misura quantitativa dei percorsi linearmente indipendenti nel codice sorgente che può aiutarti a comprendere la complessità del tuo programma e migliorare la copertura del codice. Puoi sfruttare NDepend per analizzare la complessità ciclomatica nel codice della tua applicazione. Puoi leggere di più sulla complessità ciclomatica in questo articolo.

Query utilizzando CQLinq

CQLinq è una delle caratteristiche più sorprendenti di NDepend. CQLinq consente di eseguire query sul codice .Net utilizzando LINQ. È possibile sfruttare CQLinq per eseguire query sul codice debito, problemi, regole e quality gate.

Diamo un'occhiata a un esempio. La seguente query CQLinq mostra i nomi dei metodi e la complessità ciclomatica dei metodi non astratti che hanno una complessità ciclomatica maggiore di 20, ordinati in ordine decrescente del valore della complessità ciclomatica.

da m in Application.Methods

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

orderby m.CyclomaticComplexity decrescente

seleziona nuovo {m, m.CyclomaticComplexity}

Ecco un altro esempio di una query CQLinq. Questo quando eseguito mostrerà i nomi dei metodi che hanno più di 100 righe di codice.

da m in Metodi dove m.NbLinesOfCode> 100 seleziona m

Per saperne di più su CQLinq, puoi fare riferimento alla documentazione di NDepend qui. 

NDepend è uno strumento di analisi del codice statico che può fornire preziose informazioni sul codice della tua applicazione. È possibile eseguire NDepend come applicazione autonoma o integrata in Visual Studio. Sebbene NDepend non sia gratuito, ha un prezzo ragionevole considerando le sue potenti funzionalità ed è disponibile per tutte le versioni recenti di Visual Studio.

Se vuoi una grande risorsa per l'apprendimento di NDepend, consiglio vivamente il corso Pluralsight "Practical NDepend" di Eric Dietrich.