Domanda

A volte guardo un certo codice, cerco usi di un metodo (utilizzando ReSharper) e scoprire che è chiamato solo da test. Quindi è effettivamente ridondante e posso eliminarlo e i metodi che chiamano.

Ovviamente non c'è alcun punto di avere codice non utilizzato in giro il posto, rallentando l'accumulo e la prova di funzionamento. Quello che mi piacerebbe è uno strumento che mi può dire dove tutti i bit di codice di produzione sono che sono accessibili solo tramite test.

Ho una versione completa di ReSharper, e anche una versione di prova di NDepend, ma non hanno trovato il modo di utilizzare uno di questi per ottenere il risultato che voglio (senza pagare per questo). Ho il sospetto che possa essere possibile con la versione completa di NDepend ma ci sono altri strumenti che le persone conoscono?

Se il contesto aiuta, la soluzione è e sito web ASP.net, gran parte della la cui funzionalità è gestita da un servizio WCF. Così i punti di ingresso solo valide per la maggior parte del codice sono i metodi di servizio. Le prove sono nei propri progetti separati.

Ho iniziato una taglia perché sono sicuro che qualcun altro deve aver avuto e risolto questo problema prima!

È stato utile?

Soluzione

Manualmente guardando con NDepend dovrebbe funzionare con la Dependency Matrix. Ci si può vedere quali metodi sono utilizzati solo dalle Assemblee di unit test.

Non sono sicuro se si può scrivere proprie query CQL con la versione di prova. Ma con la versione Pro è possibile utilizzare una query in questo modo:

SELECT METHODS WHERE IsUsedBy "ASSEMBLY:NAME_OF_THE_UNIT_TEST_ASSEMBLY" 
AND !(IsUsedBy "ASSEMBLY:NAME_OF_ANOTHER_ASSEMBLY" OR IsUsedBy "ASSEMBLY:ANOTHER_NAME")

Per far funzionare tutto questo è necessario creare un progetto NDepend che conosce tutte le Assemblee.

Per NAME_OF_THE_UNIT_TEST_ASSEMBLY si deve inserire il montaggio di prova Unità e nella seconda parte si deve specificare che si produzione assembly di codice con IsUsedBy e separati con OR.

Altri suggerimenti

Un approccio non tecnico potrebbe essere quella di rimuovere temporaneamente voi progetto di test dalla soluzione, quindi utilizzare l'analisi del codice di Visual Studio (o FxCop) per individuare tutti i metodi che non vengono chiamati da qualsiasi altra cosa.

Si potrebbe usare NDepend con alcune query personalizzate ... Questo è solo la parte superiore della mia testa, mai usato proprio per questo, ma dovrebbe funzionare.

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