2009-07-09 11 views
15

En un futuro cercano, heredaré un proyecto algo grande. He estado haciendo algunas pequeñas actualizaciones recientemente, y noté que algunas partes podrían usar algunas refactorizaciones, ya que hay métodos que realizan la misma operación con una pequeña diferencia.¿Existe: buscador de código repetido?

Me preguntaba si hay una herramienta que tome un montón de código fuente y encuentre bloques de código similares para que puedan ser identificados para una posible refactorización. Sería genial si hubiera presente una búsqueda borrosa, de modo que pudiera identificar una operación similar (aparte de las tiradas de código repetidas al pie de la letra).

No espero que el programa refactorice el código en sí, solo identifique la posible repetición.

Mi plataforma es C#, pero cualquier solución sería útil

+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

8

http://www.codeplex.com/CloneDetectiveVS

"detective clon es una integración de Visual Studio que permite analizar los proyectos de C# de código fuente que se duplica en otro lugar."

Están sucediendo muchas cosas, visualmente, cuando lo arrojas a un proyecto con mucha duplicación de código. Si eso se combina con el uso de Clone Detective por primera vez, puede ser un poco abrumador al principio.

Realmente recomiendo esta herramienta. Es excelente.

+0

El código que estoy heredando es actualmente .Net 1.1 (obviamente requiere VS.NET) así que esto no me ayudará en este proyecto hasta que lo actualicemos por lo menos 2.0. ¡Pero esto ayudará con cualquier otro proyecto en el que estoy actualmente! Echaré un vistazo, +1 –

+0

Seleccionado como respuesta porque: Se integra en mi IDE actual para la mayoría del proyecto; Gran interfaz; y su fuente abierta. Simian se ve bien, pero planeo usar esto en un entorno comercial y el costo es prohibitivo (para mí) –

+1

Aunque puede no ser un problema a partir de septiembre de 2010 Clone Detective no parece ser compatible con Visual Studio 2010 – Jafin

5

CPD trabaja en el nivel simbólico, por lo que debe estar bien con C#. Tiene algunos mecanismos para factorizar nombres de variables y otros identificadores también.

5

nunca he utilizado, pero Simian podría funcionar para usted

simio (Similitud Analyzer) identifica la duplicación en Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML , XML, Visual Basic, código fuente de Groovy y incluso archivos de texto sin formato. De hecho, el simio se puede utilizar en cualquier archivo de lectura humana , como archivos ini, descriptores de despliegue , lo que sea.

+0

Solo para tener en cuenta, He usado Simian, y no me molestaré en volver a hacerlo. Ciertamente no lo recomendaría a nadie. También he usado Clone Detective, y es una excelente aplicación. – MagicAndi

2

Simian es un producto que afirma analizar el código fuente en varios idiomas, incluido C#. Nunca lo he usado, así que no puedo responderlo en absoluto. Es gratis para uso no comercial y se lo venderán a usted para proyectos comerciales.

4

Actualmente estoy usando Duplicate Finder. Funciona en cualquier archivo de texto, y lo he estado usando en mis proyectos de C#, con mucho éxito. Es línea de comando, así que lo he integrado en mis procesos de compilación.

1

Si está pensando en encontrar un código duplicado en un proyecto, entonces quizás también deba considerar la posibilidad de utilizar herramientas más amplias static code analysis.

Algo así como Sonar comprueba código duplicado, estándares de codificación, pruebas unitarias, código de cobertura, código complejo, posibles errores, comentarios y diseño y arquitectura.

Puede encontrar un list of static code analysis tools on Wikipedia.

Cuestiones relacionadas