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

  1. Buenas!! cual es el archivo de configuración para configurar los controles que se quieren?
    muchas gracias!

    ResponderBorrar
    Respuestas
    1. Es el archivo KBDoctor.ini que esta en el directorio de tu usuario bajo la KB.

      Lo podes editar desde el menu o con un editor de texto cualquiera.

      Borrar
    2. Muchas gracias! será que se podrá enganchar a un jenkins para correr en forma automática los controles que deseamos durante un esquema de CI?

      Borrar
    3. Hay una tarea MSBuild que viene con KBDoctor que se puede ejecutar, y hace el review object de los objetos cambiados en un rango de fechas.
      Si no se le pasa el rango de fechas, controla los objetos cambiados en la ultima semana.
      Si te interesa, y me pasas un mail donde contactarte te explico como hacerlo.

      Borrar
    4. Buenas! le escribí a este mail "ealmeida@concepto.com.uy"

      Borrar
  2. Buenas!! cual es el archivo de configuración para configurar los controles que se quieren?
    muchas gracias!

    ResponderBorrar
    Respuestas
    1. Hay una opcion en el menu de KBDoctor para configurarlo.
      Se llama KBDoctor.ini y esta en el directorio del usuario que abrio la KB.

      Borrar

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.

Entradas más populares de este blog

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

Aplicación monolítica o distribuida?

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