2009-03-26 10 views
6

Ho una grande base di codice e c'è un sacco di codice ripetuto, o quasi ripetuto dappertutto, è quasi UNDRICO come il codice può ottenere, ma tracciare i "duplicati" è difficile, quindi mi chiedevo se ci sono gli strumenti per trovare il potenziale codice DRYable, qualcosa come uno strumento diff o un analizzatore di distanza Hamming, non hanno bisogno di conoscenza specifica del linguaggio o qualcosa del genere.Esistono strumenti di DRYer con codice?

Quindi qualche indizio come uno strumento come questo?

+0

Che lingua stai cercando? – Brian

+0

Circa 5 lingue :) –

risposta

1

(open source) funziona in C, C++, Java, C# e VB.Net. L'ho provato una volta e ho trovato abbastanza codice duplicato da farmi lavorare per molto tempo.

Ho sentito parlare di Simian (commerciale) ma non l'ho provato.

+0

Duplo sembra fantastico, è più o meno quello che stavo cercando –

2

Se stai lavorando in ruby, puoi provare con lo this.

+0

Questi sono alcuni strumenti ingegnosi, avevo a lungo considerato qualcosa come loro, ma non sono mai riuscito a farlo –

1

Io uso Simian in VS. È abbastanza buono, non eccezionale.

1

Clone Dr di Semantic Designs è un prodotto commerciale che trova il codice duplicato in un gran numero di linguaggi di programmazione diversi. http://www.semdesigns.com/Products/Clone/index.html

Le grandi aziende possono permettersi questo prodotto. Individui ... non così tanto. Vorrei che ci fossero alcuni progetti open source in questo modo. Potrebbe essere un progetto divertente su cui lavorare. Se solo sapessimo di una comunità di programmatori con un po 'di tempo a disposizione ...

+0

Qualche volta? Sono l'autore e ho lavorato su CloneDR a intervalli regolari per 10 anni. –

1

I modelli semantici CloneDR trovano duplicati duplicati esatti e quasi mancanti in base alla struttura di langauge, quindi non viene ingannato dai cambiamenti di spazi bianchi o interruzioni di riga, commenti inseriti/modificati o anche nomi di variabili modificati.

sfrutta fronte della produzione parser finisce di lavorare con C, C++, C#, Java, COBOL, PHP, Python, Fortran, Ada, ...

Ci sono una serie di report di analisi esempio Clone al web sito per varie lingue.