Búsqueda de referencias

GeneXus contiene un browser que permite buscar qué objetos están referenciado a otro objeto (campo de la base de datos, tabla, procedimiento, etc). Esta búsqueda es extremadamente útil, pero se puede refinar aun más. El objetivo de estas extensiones es dar más opciones de búsqueda sobre las referencias que guarda en la Kbase GeneXus:

Estas búsquedas están agrupadas en la opción de menú Lsi.Extensions > Tool Windows > Search references. El formato de la ventana es el siguiente:

Imagen referencias

Type Indica el tipo de objeto al que buscar referencias:
  • Attribute
  • Table
  • BC
  • SDT
  • Variables (by type)
Object / V.Type / Generator

Si el título indica "Object", es el nombre del objeto al que buscar referencias. Pulsando el botón "..." se abre la selección de dicho objeto.

Si el título indica "V.Type", es el nombre del tipo de la variable de la que buscar variables. Por ejemplo: "varchar" o "exceldocument". El texto se busca tal cual aparece en la columna "Type" de la parte de variables del objeto.

Si el título indica "Generator", es la descripción del generador desde el que buscar referencias.

Member Sólo se aplica si el tipo de objeto es BC o SDT. Aquí se indica si se quiere buscar una referencia a un campo o a una funcion de un SDT.
En el campo adyacente se indica el nombre del campo / función (p.ej. "toxml" o "save") del SDT/BC del que buscar referencias.
Only objects that reference to table Sólo se aplica si el tipo de objeto a buscar es atributo. Aquí se puede indicar el nombre de una tabla. Si se indica, sólo se buscarán objetos que hagan referencia a dicha tabla. Si se buscan escrituras del atributo, sólo se buscarán objetos que referencien a dicha tabla con operaciones de inserción / actualización. Si se buscan lecturas / escrituras del atributo se buscarán objetos que referencien de cualquier forma a la tabla.
Si el campo se deja en blanco, se ignorará.
Buscar (checkboxes) Sólo se aplica si el tipo de objeto es atributo o tabla. Aquí se indica qué tipo de referencias buscar al atributo/tabla. Para los atributos pueden ser una de estas dos:
  • Lecturas y escrituras
  • Escrituras
Y para tablas pueden ser una o más de estas:
  • Inserciones
  • Escrituras (actualizaciones)
  • Lecturas
  • Borrados
Only specifiable objects Sólo se aplica si se buscan referencias desde un generador. Si está marcado, sólo se muestran los objetos especificables. Esto puede ser útil si se quieren hacer un rebuild sólo de los objetos generados por dicho generador. En este caso, se puede hacer la busqueda marcando este campo, seleccionar todos los objetos de la lista y hacer un Rebuild with these only.
Botón buscar/cancelar Lanza la búsqueda de referencias, que se ejecuta en segundo plano. Mientras se ejecuta la búsqueda, se puede usar este mismo botón para cancelarla.

Búsqueda de referencias a atributos

Permite buscar referencias de lectura/escritura o escritura a atributos de la KBase. Hace dos tipos de búsquedas:

  1. Busca que objetos referencia al atributo directamente
  2. Si el atributo se referencia en Bussiness Components, busca además en que objetos se referencia a dichos BC, y en estos se busca referencias al campo correspondiente del atributo.

Si se buscan referencias de lectura, mira si el atributo es referenciado en cualquier parte del objeto, excepto en las variables. Si se buscan referencias de escritura, se revisa si el objeto escribe el atributo de alguna forma.

Limitaciones

Los posibles falsos positivos aparecen con el fondo gris en la lista de resultados.

Búsqueda de referencias a tablas

Permite buscar referencias a tablas según el tipo de operación (lectura, escritura, inserción y/o actualización). Hace dos tipos de búsquedas:

  1. Busca operaciones directas sobre la tabla
  2. Busca operaciones en la tabla a traves del BC. Esto es, busca llamadas a save(), delete(), load() de BC que referencien a la tabla.

Limitaciones

Los posibles falsos positivos aparecen con el fondo gris en la lista de resultados.

Búsqueda de referencias a un campo de un SDT/BC

Busca objetos que referencien de alguna forma a un campo o a un función miembro de un SDT o BC. La busqueda del miembro del SDT se hace en cualquier posición de una expresión que haga referencia a una variable basada en un SDT, o en cualquier otro SDT que haga referencia al SDT buscado.
Por ejemplo, si se tienen dos SDTs:

SDT1 
{
    Campo1: N(4)
    Campo2: N(4)
}
SDT2
{
    Lista: Coleccion de SDT1
}
		

Si se buscan referencias al miembro "Campo1" del SDT1, los objeto que contengan expresiones como "&SDT1.Campo1" o "&SDT2.Lista.item(1).Campo1" se encontrarán.
Lo mismo se aplica a la busqueda de funciones. Por ejemplo, se puede buscar referencias a la función "save" de un BC ("&BC.save()") o "fromxml" ("&SDT1.FromXml(&Xml)")

Limitaciones

Los posibles falsos positivos aparecen con el fondo gris en la lista de resultados.

Búsqueda de refencias a un campo/función de un dominio enumerado

Busca referencias a un campo o función de un dominio que tiene valores enumerados. Por ejemplo, se pueden buscar referencias a Dominio.ValorEnumerado, o a Dominio.EnumerationDescription(). En el campo "Object" se indica el nombre del dominio enumerado y en el campo "Member" se indica el nombre del valor enumerado o la función a buscar.

Limitaciones

Los posibles falsos positivos aparecen con el fondo gris en la lista de resultados.

Búsqueda de variables por tipo

Busca objetos que tenga una parte de variables (procedures, webpanels, etc) y que contengan al menos una variable del tipo indicado. El texto se busca tal cual aparece en la columna "Type" de la parte de variables del objeto.

Limitaciones

Buscar objetos referenciados por uno o varios generadores

Busca los objetos llamables referenciados por uno o más generadores: Busca todos los objetos main del generador y busca los objetos llamables referenciados por cada uno de los main. Si alguno de los objetos llama a otro main, este se ignora.

Esta extension sólo busca objetos llamables (que implementan la interface ICallable). Esto significa que objeto a los que no se puede "llamar" desde código con un call / upd no se tienen en cuenta: atributos, tablas, etc.

Si se marca el campo Only specifiable objects se marca, los objetos no especificables pero si llamables (External objects, SDTs, etc.) no se mostrarán. Esto es útil si se quiere hacer un rebuild de los objetos referenciados por el generador.

Si todos los generadores seleccionados son del mismo tipo (Win o Web), y se encuentra un objeto que referencia a otro que no es del mismo tipo (p.ej. un Workpanel que referencia a un Webpanel), no se reporta el objeto referenciado.

Limitaciones