Entradas

Mostrando las entradas de junio, 2015

KBDoctor: Encontrando objetos candidatos para refactoring.

Imagen
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...