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
Publicar un comentario
1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.