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

Aplicación monolítica o distribuida?

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

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.