Output inteligente (o con alguna viveza)

En GeneXus X o superiores, la forma de identificar si tengo algún error o me falta compilar algo, es hacer un BUILD ALL. Con esto se especifica/genera/compila todo aquello que esta pendiente o fue cambiado y la salida se puede ver en la ventana OUTPUT.

Cuando trabajamos con KB grandes, analizar la salida en el output es una tarea tremendamente engorrosa, porque no tenemos  se brindan buenas herramientas para su manejo.

Por ejemplo, ahora estoy trabajando en una KB que tiene muchos reportes PDF, web services, exports a planillas y procesos batch, con lo que tenemos 1162 objetos main, cuya compilación sale en el output.. El output que se genera cuando no existen errores de especificación y compilación  es de mas de 500 kb, y analizar un archivo de texto de ese tamaño siempre resulta muy incomodo. Cuando hay objetos a especificar o errores, el archivo es mucho mayor, por lo que el problema es peor.

Se me ocurren algunas funcionalidades que se le pueden agregar de forma de simplificar o hacer mas agil el analisis de errores.

* Tener una opción para mostrar solo los errores
Hoy se muestran todos los objetos, con y sin errores. Me gustara poder ver aquellos objetos que dieron algún error. En la especificación hoy eso ya se puede hacer en la ventana donde se ven las navegaciones, pero no se puede tener lo mismo en la etapa de compilación.

* Poder abrir los archivos generados desde el output. 
Cuando en el output vemos el error

hvermiccg.cs(643,53): error CS1012: Too many characters in character literal

tenemos que ir al directorio de modelo, abrir el objeto y analizar cual es la causa por la cual esta generando mal ese codigo (en este caso, era un COMBO BOX con valores inválidos). Nos ahorraria trabajo tener una opción que nos permita seleccionar hvermiccg.cs y con el botón derecho tener Open File y que abra dicho fuente generado por GeneXus en un editor predeterminado.
También podría tener links.
Hoy tenemos la opción Open Selection, que intenta abrir un objeto con dicho nombre, pero muchas veces necesitamos ir al fuente para ver el error.

* Poder abrir los objetos involucrados desde el output.
 Como decia en la sugerencia anterior, la opcion Open Selection funciona bien cuando el fuente generado tiene el mismo nombre que el objeto, pero no nos permite abrir el objeto cuando se genera un fuente con un nombre diferente. Esto sucede con los SDT, BC, procedimientos main, work panels main, transacciones main win y puede haber mas.

Estaría bueno que pudiera seleccionar el nombre de un fuente en el output y pudiera abrir el objeto que lo generó, en todas las oportunidades.

* Poder recompilar solo los objetos con errores. 
Estaría bueno poder intentar hacer el BUIILD de los objetos que dieron errores únicamente para ahorrar tiempo en el build all.

* No perder las salidas de Build Alls anteriores. 
Supongamos que tengo una KB grande y elimino un atributo de una tabla. Es normal que al hacer un BUILD ALL esto genere errores en muchos objetos (al menos en todos lo que lo usan). Corrijo uno de los errores y me gustaría poder especificar dicho objeto, pero sin perder la salia del BUILD ALL anterior, de forma de no tener que perder el tiempo de OTRO build all completo.


TIP: Para ahorrar un poco de tiempo en el análisis de los errores del output, utilizo la siguiente técnica, para tener un resumen de los errores.
Cuando termina el buidl all, hago
boton derecho / Save File  y salvo el archivo en un directorio con el nombre errores.txt
En dicho directorio tengo un archivo de comando que hace.

del salida.txt
find "error: spc" Errores.txt | Sort | uniq  > salida.txt
find "error CS"   Errores.txt | Sort | uniq  >> salida.txt
Notepad salida.txt

Está pensado para C#, pero para java o ruby es fácil de adaptar.
Utilizo el uniq que es un comando para eliminar repetidos y es original de Unix, pero se puede encontrar aquí una versión que funciona en Windows.

De la serie GeneXus TILO Wishlist.

Comentarios

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.