2010-09-21 9 views
8

Occasionalmente sto guardando un po 'di codice, cerco l'utilizzo di un metodo (usando il resharper) e trovo che è chiamato solo dai test. Quindi è effettivamente ridondante e posso cancellarlo e i metodi che lo chiamano.Come trovare il codice che viene chiamato solo dai test

Ovviamente non ha senso inserire codice inutilizzato in giro per il luogo, rallentando la costruzione e l'esecuzione del test. Quello che mi piacerebbe è uno strumento in grado di dirmi dove tutti i bit del codice di produzione sono accessibili solo tramite test.

Ho una versione completa di resharper, e anche una versione di prova di NDepend, ma non ho scoperto come utilizzare uno di questi per ottenere il risultato che voglio (senza pagare per questo). Sospetto che sia possibile con la versione completa di NDepend ma ci sono altri strumenti che la gente conosce?

Se il contesto aiuta, la soluzione è e il sito Web ASP.net, gran parte delle cui funzionalità è gestita da un servizio WCF. Quindi i soli punti di ingresso validi per la maggior parte del codice sono i metodi di servizio. I test sono nei loro progetti separati.

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

+1

Alcuni di questi codici di test sono probabilmente mock, stub, ecc ... – CaffGeek

+0

@Cad tutti i mock e gli stubs ecc. Sono nei miei progetti di test. In questa domanda sono più preoccupato per il codice di produzione. –

risposta

4

L'aspetto manuale con NDepend dovrebbe funzionare con Dependency Matrix. Qui è possibile vedere quali metodi vengono utilizzati solo dagli Unit Test Assembly.

Non sono sicuro di poter scrivere le proprie query CQL con la versione di prova. Ma con la versione Pro è possibile utilizzare una query come questa:

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 è necessario inserire il gruppo di test unità e nella seconda parte è necessario specificare gli assembly codice di produzione con IsUsedBy e separati con OR.

+0

Per quanto posso vedere, ho bisogno della versione completa per poter eseguire query personalizzate. Sto cercando di creare una regola FxCop personalizzata lungo le linee della tua query (molto più difficile su FxCop però ..) –

+2

Sarebbe bello se tu potessi pubblicare la regola – Noffls

0

È possibile utilizzare NDepend con alcune query personalizzate ... Questo è semplicemente fuori di testa, mai usato per questo, ma dovrebbe funzionare.

+0

L'ho esaminato, e sembra che probabilmente dovrei ottenere la versione a pagamento per poter aggiungere le mie query. –

2

Un approccio non tecnico sarebbe quello di rimuovere temporaneamente il 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 nessun'altra parte.

+0

Il problema con l'utilizzo di FxCop è che ignora i metodi pubblici quando è alla ricerca di un codice morto, e so che molte delle cose che sto cercando di trovare qui sono metodi pubblici –

Problemi correlati