studio seticon programacion libro desde definicion codigos cero java refactoring code-analysis

seticon - programacion en java desde cero pdf



Herramientas para detectar código duplicado(Java) (6)

La mayoría de las herramientas enumeradas en el artículo de Wikipedia sobre herramientas de código duplicadas detectarán duplicados en muchos idiomas diferentes, incluido Java.

Estoy en un proyecto donde los programadores anteriores han estado copiando y pegando códigos por todos lados. Estos códigos son realmente idénticos (o muy similares) y podrían haber sido refactorizados en uno.

He pasado innumerables horas refabricando estos códigos manualmente, pero creo que debe haber una forma mejor. Algunos son métodos estáticos muy triviales que podrían haberse trasladado a una clase antepasado (pero en su lugar, los programadores junior anteriores habían copiado todo).

¿Hay alguna herramienta de análisis de código que pueda detectar esto y proporcionar informes / recomendaciones? Prefiero la herramienta de fuente abierta / gratuita si es posible.


O bien Simian o CPD de PMD. El primero admite un conjunto más amplio de idiomas, pero no es gratuito para proyectos comerciales.


SonarQube puede detectar códigos duplicados pero no da recomendaciones sobre su eliminación. Es gratis y, aunque con la configuración predeterminada solo puede detectar clones léxicamente idénticos, hay un CodeAnalyzer gratuito para el complemento SonarQube con el que puede detectar clones estructurales más sofisticados en lugar de clónicos léxicos.


Vea nuestro SD Java CloneDR , una herramienta para detectar el código duplicado exacto y casi perdido en los grandes sistemas Java.

El CloneDR encontrará clones de código a pesar de cambios en el espacio en blanco, saltos de línea, eliminaciones de inserciones de comentarios, modificación de constantes o identificadores y, en algunos casos, incluso el reemplazo de un enunciado por otro o un bloque de enunciados.

Muestra dónde se encuentra cada conjunto de clones, cada clon individual, una abstracción de los clones que tienen su común compartido y la parametrización de la abstracción para mostrar cómo cada instancia de clonación puede derivarse de la abstracción.

Encuentra 10-20% de clones en la mayoría de los sistemas Java.


Yo uso las siguientes herramientas:

Ambas herramientas tienen soporte de detección de duplicación de código. Pero ambos carecen de la capacidad de aconsejarle cómo refactorizar su código.

JetBrains IntelliJ IDEA Ultimate tiene un buen análisis de código estático con soporte de duplicación de código, pero no es gratis.