Se viene "Object Review" en KBDoctor

Estamos programando una opción en KBDoctor, que va a hacer un Object Review, de forma de hacer una analisis y revision del objeto y detectar posibles errores, antes de subir dicho objeto a GXServer.

La idea es que aparezca en el dialogo del Commit, permitiendo revisar todos los objetos que van a ser subidos al server.

Es una herramienta que ayuda a realizar una revision del objeto, para liberar al revisor de los controles rutinarios y que pueden automatizarse. Ademas unifica algunos criterios en todo el grupo de desarrollo, de forma de hacer mas predecible como seran los objetos.

Que hace el Object Review?

Hace algo mas que un review, pues por ejemplo, borra todas las variables no usadas y si el objeto es una transaccion y no esta siendo referenciada por nadie, le borra las reglas, los eventos, le saca la masterpage y vuelve los forms a default.

Tambien avisa cuando:

  • Hay parametros tenga IN/OUT/INOUT
  • Tiene mas de N1 parametros
  • Tiene mas de un parametro de salida
  • Tiene bloque de codigo mas largo que N2 lineas
  • Tiene codigo comentado
  • Tiene variables que no estan basadas en atributos/dominios
  • Propiedad Commit on Exit = Yes 
  • Nivel de indentacion demasiado profundo
  • Codigo demasiado complejo. 
  • No tiene modulo
  • Constantes en el código (aun no esta)

En caso de ser un atributo

  • No esta basado en un dominio (con excepciones date, datetime, boolean, etc)
  • Tiene descripcion default (igual al nombre del atributo)
  • Column Title = Title
  • Atributo no esta en ninguna tabla


En caso de SDT/Transacciones

  • Algun att no esta basado en dominio
  • Algun campo del SDT no esta basado en atributo o domino
Tenemos un archivo de configuración que permite configurar que controles se quieren tener y otros parámetros como cantidad de lineas de codigos máxima, cantidad de parametros maximo etc.

Se puede para un objeto, para todos los objetos pendientes de Commit,  varios objetos, para todos los objetos de un folder/modulo o para todos los objetos de la KB.

Aun le faltan varias cosas, pero creo que como esta, ya ayuda mucho a mejorar el codigo Genexus.


En el futuro vamos a incorporar cosas como :

  • Usa New / Delete (deberia usar BC)
  • Sintaxis Call(Objeto) en vez de Objeto.Call() o Objeto()
  • Control estricto de parametros, los dominios genexus deben ser iguales
  • Control de codigo repetido
  • Objeto publico no referenciado desde el exterior
  • Objeto privado referenciado desde afuera. 
En los proximos dias subo al marketplace y estara disponible para Evo3, GX15 y GX16.










Comentarios

Entradas más populares de este blog

Paleta de colores en GeneXus

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