2010-02-02 15 views
10

Lamentablemente, un proyecto en el que he estado trabajando últimamente tiene una gran cantidad de código de copiar y pegar, incluso dentro de archivos individuales. ¿Hay alguna herramienta o técnica que pueda detectar la duplicación o casi duplicación dentro de un solo archivo? Tengo Beyond Compare 3 y funciona bien para comparar archivos separados, pero no puedo comparar archivos individuales.Eliminando la duplicación de código en un solo archivo

Gracias de antemano.

Editar:

Gracias por todas las grandes herramientas! Definitivamente los veré.

Este proyecto es un proyecto ASP.NET/C#, pero trabajo con una variedad de idiomas, incluyendo Java; Estoy interesado en qué herramientas son las mejores (para cualquier idioma) para eliminar la duplicación.

+0

Las soluciones son completamente diferentes para diferentes idiomas. Etiquetado para ASP.NET/C#. – Tronic

+0

Correcto, pero me gustaría saber las mejores herramientas para los idiomas más populares (porque trabajo con varios idiomas a la vez). Gracias sin embargo. –

+0

La solución CloneDR es * la * para muchos idiomas. CloneDR maneja C#, Java, HTML y JavaScript, que creo que cubre bastante bien la situación de "ASP.NET" del OP. –

Respuesta

0

Resharper hace esto automágicamente - sugiere que cuando se piensa código debe ser extraído en un método, y hará que la extracción de

4

Salida Atomiq. Encuentra el código duplicado que es el primero para extraer a una ubicación.

http://www.getatomiq.com/

+0

... para .Net de todos modos. :) –

+0

CopyPasteKiller se ha renombrado como Atomiq y ahora cuesta $ 30 (lo que parece razonable). http://nimblepros.com/products/atomiq.aspx –

0

Salida PMD, una vez que haya configurado (que es poco sencilla) puede ejecutar su copy paste detector para encontrar código duplicado.

1

Vea SD CloneDR, una herramienta para detectar el código de copiar y pegar código dentro y entre varios archivos. Detecta copias exactas, copias que han sido reformateadas y copias casi irrecuperables con diferentes identificadores, literales e incluso diferentes sequnidades de enunciados.

El CloneDR maneja muchos idiomas, incluido Java (1.4,1.5,1.6) y C# especialmente hasta C# 4.0. Puede ver ejemplos de informes de detección de clones en el sitio web, que también incluyen uno para C#.

1

No dice qué idioma está utilizando, lo que afectará a las herramientas que puede usar.

Para Python hay CloneDigger. También es compatible con Java, pero no lo he intentado. Puede encontrar duplicación de código tanto con un solo archivo como entre archivos, y le da el resultado como un informe similar a un diff en HTML.

0

Uno con algunas habilidades de oficina puede hacer siguiente secuencia en 1 minuto:

  • uso formateador ordinaria para unificar el estilo de código, preferiblemente sin el ajuste de línea
  • alimentar el texto de código en Microsoft Excel como una sola columna
  • buscar y reemplazar todos los espacios duales con una sola y hacer otras sustituciones
  • columna de clasificación

En este punto, las palabras clave para los duplicados ya estarán bien detectadas.Pero para ir más allá

  • complemento fórmula comparador de segunda columna y en contra de 3er
  • copiar y pegar los valores de nuevo, ordenar y ver las líneas más repetitivas
0

existe una herramienta de análisis, denominada Simian , que aún no he probado. Supuestamente se puede ejecutar en cualquier tipo de texto y señalar elementos duplicados. Se puede usar a través de una interfaz de línea de comando.

Cuestiones relacionadas