KBDoctor poder corregir algunos dificultades comunes que se presentan en KB GeneXus. Voy a contar cuales son los reportes que pueden sacarse. Reporte de Atributos Todos los atributos deben estar basados en dominios. El reporte "Attributes without domain", faculta listar todos aquellos atributos que no estan basados en dominios y que a su vez no son subtipos de otros atributos. Facilita detectar cuales son los atributos que hay que modificar. Lista y faculta modificar, aquellos atributos que tienen la descripciones que deja por defecto GeneXus. Permite cambiar el titulo contextual, de las columnas, etc. Es significativo ajustar estos literales afiliados a atributos, porque ayudan muchisimo en el diseño de pantallas sobre todo si uno cimienta su desarrollo en patterns. El atributo marcado como descripcion en cada tabla, es conveniente que no se repita. Por ejemplo, si poseemos una tabla de paises, no es bueno que dos tengan exactamente el mismo nombre, pues luego se dificulta su identificacaion. Por ejemplo, si hacemos un Dynamic Combo y mostramos las descripciones, se hace imposible saber de que valor estamos hablando viendo solamente la descripcion. Si se determina un indice unico por dicho atributo, este asunto se soluciona. Estos son atributos char de largo gran que 50. La grania de estos atributos, es conveniente definirlos como Varchar, pora que ocupen menos espacio en la fundamento de datos, optimizando asi el almacenamiento y la performance de la fundamento de datos. Los atributos de largo menor a 25 y tengan largo variable, son listados. Estos no se estiman un error, sino que hay que revisarlos. Reportes de Tablas Al idéntico que la tabla, en algunos mensajes se usan las descripciones de los subtipos. Es conveniente que los mismos tengan descripciones que expresen el contenido de dicho subtipos. Reporte de indices. Uno de los dificultades mas comunes de performance, es tener demasiados indices definidos. Algunas veces, es dificil identificar cuales son los indices que no se usan. With parm() without in:/out:/inout: Este reporte presenta cuales son los objetos que tienen variables que no se cimientan en dominios o atributos y faculta corregirlos. Cuando un objeto, tiene norma parm() puede inferirse que va a ser llamado por otros. Si tiene la norma Commit on Exit = YES, puede realizar que se quieber la integridad transaccional, cortando la transaccion en la fundamento de datos. Es conveniente tener identificado todos los objetos que hacen commit en la fundamento de datos, para que no se nos escapen errores. Este reporte presenta cuales son los objetos que tienen variables definidas, pero no son referenciadas. Desde hace un tiempo utilizo mas el Variables Cleaner