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 y yo no los he encontrado aun. 
* Objetos con muchos comentarios Cua…