Domanda

Sto cercando la migliore approccio per trattare con il codice duplicato in un progetto PHP legacy con circa 150k righe di codice.

E 'questo qualcosa meglio avvicinato manualmente o ci sono standalone rilevatori di codici duplicati che alleviare il dolore?

È stato utile?

Soluzione

Come le altre risposte già menzionato, questo dovrebbe essere affrontata manualmente, perché si può decidere di cambiare le altre cose come si va avanti per rendere il più pulito base di codice. Forse l'invocazione reale è già superfluo, o frammenti simili possono essere combinati.

Inoltre, in pratica, la gente di solito leggermente modificare il codice copiato, quindi non ci sarà spesso duplicati diretti, ma varianti. Temo c & p rilevamento automatico saranno per lo più non si riesce lì.

Ci sono tuttavia strumenti di refactoring che possono aiutare con l'esecuzione acutally i cambiamenti (e qualche volta anche con la ricerca di probabili candidati). Google per "php refactoring", ci sono un bel paio di strumenti disponibili, sia stand-alone che come parte di IDE.

Altri suggerimenti

Il CloneDR trova duplicare il codice, entrambe le copie esatte e le mancate, tra grande fonte sistemi, parametrizzati dalla sintassi langauge. Per ogni insieme di cloni rilevato, sarà anche proporre uno schizzo del codice astrazione che potrebbero essere utilizzati per sostituire i cloni.

E 'disponibile per molti linguaggi, compreso il sistema di PHP. Un rapporto di rilevamento clone di campione PHP per Joomla (un framework PHP) si possono trovare al link.

Si prega di tenere conto anche il processo che portano a questa duplicazione del codice!

Se è necessario modificare il codice, è la maggior parte delle volte più veloce per duplicare il codice di refactoring in modo che possa essere utilizzato per il vostro nuovo scopo, così come per il vostro vecchio scopo.

Quindi bisogna convincere la gente che il refactoring è meglio di semplice duplicazione e fa risparmiare tempo nel lungo periodo , invece di breve termine.

In caso contrario, ci si ritrova in due anni googling a questa stessa domanda hai postato qui!

grep filo può aiutare ?

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