Domanda

Ho cercato NDepend , letto un paio di blogposts su di esso e nemmeno sentito un podcast. Penso che NDepend potrebbe essere uno strumento davvero utile, ma io ancora non vedo dove avrei usato.

Come si usa? Si usa, perché? Perché no?

Mi piacerebbe sentir parlare di alcuni esempi reali i piedi per terra.

È stato utile?

Soluzione

Ho usato NDepend ampiamente nel corso degli ultimi anni. Fondamentalmente si tratta di uno strumento di analisi delle dipendenze, e quindi questo può aiutare con un sacco di problemi connessi con le dipendenze.

Una delle cose principali che uso per è quello di esaminare le dipendenze tra le mie assemblee, tipi e metodi. Questo mi aiuta a mantenere una visione di se l'accoppiamento tra i tipi è sfuggita di mano, e aiuta anche a me scorgo refactoring opportunità.

Quando intraprendere un refactor massiccio, ad esempio extracting.moving tipi da altre assemblee, questo ti permette di vedere ciò che dipende da ciò che in modo non c'è bisogno di fare il vecchio "spostare la mia tipi di un'altra assemblea, quindi provare e compilare e vediamo cosa si rompe"

NDepend ha anche una grande matrice visiva per la visualizzazione di questo tipo di informazioni.

Inoltre, ha un linguaggio di query fantastica, CQL, che permette di scrivere query personalizzate. Questi possono essere cose semplici come "Mostrami tutti i metodi che chiamano questo metodo", per le query per evidenziare codice morto, query su complessità cylcomatic, accoppiamento, ecc, e molto altro ancora.

A sua volta, può essere integrato in un processo di generazione, in modo da poter avere costruire avvisi / errori basati su query CQL, come "fallire la compilazione se un metodo ha più di 100 linee di codice, ma commenti" (questo è un esempio -. non sto suggerendo questo particolare metrica è una buona cosa)

Si può anche importare i dati di copertura di codice e dare una rappresentazione visiva di aree con copertura del codice a poco, oltre a permettere di eseguire le query CQL contro le informazioni di copertura del codice (ad esempio mostrarmi metodi con copertura del codice meno del 70%)

È anche possibile caricare il tuo build attuale del progetto, e una generazione precedente, ed eseguire query tra di loro, come "Visualizza tutti gli nuovo tipi che hanno

Questo è uno strumento fantastico, e non è troppo difficile da imparare. E 'spaventoso all'inizio, proprio a causa della enorme volume di informaiton ti dà, ma è altamente raccomandato.

Altri suggerimenti

Trovo anche prezioso per comprendere la struttura di chiamate di metodo complicate. Posso richiamare tutti i metodi transitivamente utilizzando un metodo o determinato campo, per esempio, e può vedere se ci sono possibili problemi di chiamate circolari, o dipendenze indesiderate o percorsi che sono più complicata del necessario, ecc.

Il grafico dipendenza è ora anche interattivo, così posso rimuovere metodi di cui non sono al momento interessati a, e spostare gli altri intorno a dare una buona visualizzazione di ciò che sta accadendo.

Ho trovato utile per visualizzare i cambiamenti tra le versioni di assemblee. Anche per una fotografia istantanea di modifiche in un dato rilascio ...

Credo che brilla in un ambiente di Continuous Integration in cui è possibile impostare query CQL per misurare le metriche del codice che ti interessa (complessità ciclomatica, metodi lunghi, ecc), e quindi si può misurare il vostro miglioramento in quelle zone sopra tempo.

In realtà questo strumento è utile se si dispone ad esempio interfaccia che utilizza da un'altra parte di un'applicazione sviluppata da diverso persona / fornitore. Ogni volta che si desidera cambiare l'interfaccia si deve scoprire chi sta usando l'interfaccia per evitare di rompere il suo codice (assembly non costruirà) Questo è applicabile per i progetti più grandi.

Questo strumento è utile quando l'applicazione ha un enorme numero di assemblee. Mi aiuta a scoprire le dipendenze di codice e così come i cambiamenti tra le versioni

Sono anche utilizzando NDepend per confrontare due versioni di una certa assemblea. NDepend hanno questa caratteristica eccellente. Quello mi dà View di cambiamenti e avanzamento dei lavori in assemblea, i metodi che sono stati aggiunti, rimossi i metodi e molti altri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top