2009-10-08 24 views
8

En un proyecto, encontré algunos archivos css que "olían" como si hubiera reglas de copiar y pegar en ellos.Consejos para mostrar similitudes en los archivos

Me pregunto cuáles son sus estrategias para detectar cosas de copiar y pegar en los archivos.

¡Por curiosidad me gustaría escuchar sus consejos y trucos para mostrar similitudes de archivos!

+0

Pregunta relacionada - http://stackoverflow.com/questions/2490884/why-is-copy-and-paste-of-code-dangerous – Oded

+0

posible duplicado de [¿Cómo encontrar un fragmento de código similar?] (Http: //stackoverflow.com/questions/709744/how-to-find-a-similar-code-fragment) –

Respuesta

4

Probar Simian.

Se utiliza para copiar y pegar-detección en el código fuente (Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy), pero puede ejecutar esto en un simple archivos de texto también

+0

¿hay alguna manera de hacer que el simio muestre las similitudes reales? En mi prueba, solo muestra un resumen de que "las líneas aa b en el archivo X son similares a las líneas c a d en el archivo Y" ??? Mostrar las líneas reales ayudará a aclarar mucho –

+0

O mejor aún: ¿hay alguna manera de hacerlo mostrar diffs para las líneas que son similares? –

+0

Me temo que tendrá que verificar los resultados manualmente o escribir una herramienta que evalúe los resultados de Simian y los adjunte a un visor de archivos. Tal vez podría utilizar una herramienta de difusión gratuita (por ejemplo, WinMerge, http://winmerge.org/) para ese fin. Si opta por lo último: también me interesaría esa solución ... –

3

Hay un proyecto de Copiar y Pegar la Detección (CPD) en sourceforge; http://pmd.sourceforge.net/cpd.html

Pero incluso en proyectos grandes, encuentro que mi propio conocimiento del código es un mecanismo de detección confiable (aunque no infalible).

También vea this question para otras sugerencias.

+1

La herramienta CPD parece muy limitada en idiomas. Y no tiene javascript o CSS –

+0

Gracias por señalar a "esta pregunta". Muy similar a esto, por cierto :) –

1

Nuestra Semantic Designs CloneDR es una herramienta que detecta copiar y pegar-editar bloques de código, para muchos lenguajes: C, C++, Java, C++, COBOL, ECMAScript, PHP, Visual Basic 6, VB.net, ...

Hace usando analizadores sintácticamente precisos para construir árboles sintácticos abstractos, correspondientes a las estructuras exactas del programa, que luego se comparan por similitud. Esto significa que no se confunde de ninguna manera con espacios en blanco, formmatting, comentarios o incluso diferentes "ortografía" de literales (por ejemplo, 3.14159 es lo mismo que .00314150E3).

Genera un informe que muestra exactamente cómo los bloques de código son similares y cómo varían exactamente. Puede ver ejemplos de informes en el enlace.

+0

¿Tu enlace no está funcionando? ¿Podría actualizar su respuesta? –

+0

... oops ... arreglado. –

Cuestiones relacionadas