Domanda

Quindi, hai qualche codice legacy in giro in un progetto piuttosto pesante. Come si può trovare ed eliminare le funzioni di morti?

Ho visto questi due riferimenti: Trova codice non utilizzato e strumento per trovare le funzioni non utilizzate nel progetto PHP , ma sembrano specifici per C # e PHP, rispettivamente.

C'è un programma Python che ti aiutano a trovare le funzioni che non si fa riferimento in nessun'altra parte del codice sorgente (nonostante riflessione / etc.)?

È stato utile?

Soluzione

In Python è possibile trovare il codice inutilizzato utilizzando analizzatori di codice dinamiche o statiche. Due esempi per analizzatori dinamici sono coverage e figleaf. Hanno lo svantaggio che si deve eseguire tutti i possibili rami del vostro codice al fine di trovare le parti non utilizzate, ma hanno anche il vantaggio che si ottiene risultati molto affidabili.

In alternativa, è possibile utilizzare analizzatori di codice statici che basta guardare il codice, ma in realtà non lo gestiscono. Corrono molto più veloce, ma a causa della natura dinamica di Python i risultati non sono precisi al 100% per cui si potrebbe desiderare di controllare due di loro. Due strumenti che vengono in mente sono pyflakes e vulture. Sono complementari: pyflakes trova importazioni non utilizzati e le variabili locali non utilizzati, mentre avvoltoio trova inutilizzati funzioni, metodi, classi, variabili e attributi

.

Gli strumenti sono disponibili presso il pacchetto Indice Python http://pypi.python.org/pypi .

Altri suggerimenti

pylint può fare quello che vuoi.

Non sono sicuro se questo è utile, ma si potrebbe provare a utilizzare il copertura , foglia di fico o altri moduli simili, che registrano quali parti di il codice sorgente viene utilizzato come si esegue effettivamente il tuo script / applicazione.

A causa della piuttosto rigorosa del codice python modo è presentato, sarebbe così difficile da costruire una lista delle funzioni sulla base di un'espressione regolare che cerca def function_name(..)?

E poi la ricerca di ogni nome e tot quante volte si presenta nel codice. Non sarebbe naturalmente prendere in considerazione i commenti ma fintanto che stai avendo uno sguardo alle funzioni con meno di due o tre casi ...

E 'un po' spartana, ma suona come un bel compito sonnolenta-week-end =)

a meno che non si sa che il codice utilizza la riflessione, come hai detto, vorrei andare per un grep banale. Non sottovalutare il potere della asterisco in vim come pure (esegue una ricerca della parola che avete sotto il cursore nel file), anche se questo è limitato solo al file che si sta modificando.

Un'altra soluzione è possibile implementare è quello di avere una buona suite di test (accade raramente, purtroppo) e poi avvolgere la routine con una routine deprecazione. se si ottiene l'uscita deprecazione, significa che la routine è stato chiamato, quindi è ancora usato da qualche parte. Questo funziona anche per il comportamento di riflessione, ma naturalmente non si può mai essere sicuri se non si attivano la situazione quando viene eseguita la chiamata di routine.

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