Ho usato NDepend estensivamente negli ultimi anni. Fondamentalmente è uno strumento di analisi delle dipendenze, e quindi questo può aiutarti con molti problemi legati alle dipendenze.
Una delle cose principali che utilizzo è esaminare le dipendenze tra i miei assiemi, tipi e metodi. Questo mi aiuta a mantenere una visione del fatto che l'accoppiamento tra tipi sia fuori controllo e mi aiuta anche a individuare opportunità di refactoring.
Quando ci si imbarca su un rifattore massiccio, ad es. estraendo i tipi.moving in altri assembly, questo ti permette di vedere cosa dipende da cosa non devi fare il vecchio "sposta i miei tipi su un altro assembly, quindi prova e compila e vedi quali interruzioni"
NDepend ha anche una grande matrice visiva per visualizzare questo tipo di informazioni.
Inoltre, ha un linguaggio di query fantastico, CQL, che consente di scrivere query personalizzate. Queste possono essere cose semplici come "mostrami tutti i metodi che chiamano questo metodo", alle query per evidenziare il dead code, le query su complessità cylcomatic, l'accoppiamento, ecc. E molto altro ancora.
A sua volta, può essere integrato in un processo di compilazione, in modo da poter generare avvisi/guasti basati su query CQL, come "fail the build se un metodo ha più di 100 righe di codice ma nessun commento" (questo è un esempio - non sto suggerendo che questa particolare metrica sia una buona cosa).
Può anche importare i dati di copertura del codice e fornire una rappresentazione visiva delle aree con una scarsa copertura del codice, oltre a consentire l'esecuzione di query CQL in base alle informazioni sulla copertura del codice (ad esempio, mostrare metodi con copertura del codice inferiore al 70%)
È anche possibile caricare il tuo build attuale del progetto, e una generazione precedente, ed eseguire query tra di loro, come "Visualizza tutti gli nuovi tipi che hanno copertura del codice < 70%" - questo aiuta a introdurre norme più severe su basi di codice esistenti.
Questo è uno strumento fantastico e non è troppo difficile da imparare. All'inizio è spaventoso, proprio per il volume di informazioni che ti dà, ma è altamente raccomandato.
È possibile aggiungere alcuni tag (ad esempio, la piattaforma/lingua/tecnologia NDepend per) affinché la domanda venga visualizzata sui tag "preferiti" delle persone. –