2012-04-18 24 views
14

Esiste una libreria in python per il controllo del codice duplicato? Io uso Python IDE e sto riscontrando problemi nel refactoring del mio codice. È disponibile una libreria Python che suggerisce il codice duplicato nel programma/progetto?Rimozione del codice duplicato in python

Aggiornamento: Ho trovato scavatrice clone, che secondo il suo sito,

Abbiamo testato Clone Digger sulle fonti di diversi progetti open-source. Esistono i seguenti inconvenienti del formato del report corrente:

Le differenze sono evidenziate mediante algoritmo diff. Questo modo di evidenziare non ha nulla in comune con l'algoritmo di sintassi astratta basato su di comparare sequenze di istruzioni per similarità.

I commenti di classe e funzione vengono presi in considerazione durante il calcolo della somiglianza , ma non vengono presentati nell'output. Quindi alcune coppie di cloni possono sembrare uguali ma contrassegnate come convergenti.

Esistono strumenti migliori di questo?

+0

Hai provato googling? – Marcin

+2

@Marcin: Sarei stato contento se avessi fornito qualcosa che suggeriva che ce ne sono tantissimi. Ho trovato alcuni come scavatrice di cloni ma non mi sembra promettente. –

+0

Perché non sembra promettente? Perché non hai menzionato nessuno di quelli che hai trovato? – Marcin

risposta

-11

No, non esiste un duplicatore di codice, poiché non c'è modo di distinguere facilmente se è stato ripetuto o meno perché, a seconda del programma, potrebbero esserci delle dipendenze dal codice che è "duplicato" e le cose potrebbero essere sovrascritte , ecc. . Tutto sommato, no, non esiste un duplicatore di codice che io conosca per Python. Tuttavia, l'uso di un IDE migliore che tiene traccia dell'utilizzo variabile può essere utile in questo caso. :)

+2

Sarebbe bello avere una libreria che può, anche solo suggerire per la recensione. –

+0

Cosa significa questa risposta? Naturalmente è possibile controllare il testo del codice Python per la duplicazione, proprio come qualsiasi altra lingua. – Marcin

+0

@Marcin So che puoi verificarlo, tuttavia, l'OP sta chiedendo una libreria per controllarlo per lui (questo è ciò che penso stia provando a chiedere) –