KBDoctor: Encontrando objetos candidatos para refactoring.

Desarrollé en el KBDoctor una opción para listar objetos candidatos a ser reprogramados o ajustados.


Los criterios que por ahora estoy buscando son:

* Objetos con nivel de anidación alto
Listo cuando se tienen mas de x niveles de if/do/for anidados. 

* Objetos con complejidad ciclomática alta
Calculo la complejidad ciclomatica simplificada del objeto y listo los que tengan una mayor a un rango dada. 

* Objetos con grandes bloques de código
 Apuntamos a no tener bloques de código de mas de 100 lineas de código. 
El bloque de código puede ser una subrutina, o bloques de IF/DO/FOR, etc. 
Lo que hago es una heurística, que puede tener algunos errores, pero sirve en muchos casos. 
El parseo de codigo GeneXus es tarea compleja, pues no tengo ni la gramatica completa y menos un BNF para procesarla. Estaria muy bueno que en proximas versiones del SDK de GeneXus se agregue algunos helpers para el manejo de codigo. Tal vez existan y yo no los he encontrado aun. 

* Objetos con muchos comentarios 
Cuando hay una proporción alta de comentarios frente a código, puede significar que hay código comentado y debería evitarse. 
Esto puede dar falsos positivos, pero al menos es bueno tenerlos controlados. 

Tengo pensado seguir agregando algunos criterios adicionales, al menos como indicadores, por ejemplo , que se listen cuantos objetos hacen referencia desde y hacia el objeto listado. 

Si alguien tiene algún otro indicador que quiera agregar y que sea implementable, me puede mandar un mail o poner un comentario y lo puedo agregar. 

Subi la version a Assembla y van a faltar unas semanas para que la suba al Marketplace, porque el armado de versiones para Ev2, y dos versiones para Ev3, me da bastante pereza.  



Comentarios

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Migrando de GeneXus 9.0 a GeneXus X.

Impresión directa a impresora en el WEB con aplicaciones GeneXus.