Exploración del código fuente

Información local

KDevelop entiende el código fuente, por lo que es realmente bueno a la hora de proporcionarle información sobre las variables o funciones que aparezcan en su programa. Por ejemplo, a continuación se muestra una captura de trabajo con un trozo de código, con el cursor del ratón sobre el símbolo cell en la línea 1316 (si prefiere trabajar con el teclado, puede conseguir el mismo efecto manteniendo pulsada la tecla Alt durante unos instantes):

KDevelop le muestra una ayuda emergente que incluye el tipo de la variable (aquí es DoFHandler<dim>active_cell_iterator), dónde se ha declarado la variable (el contenedor, que aquí es la función que la contiene get_maximal_velocity, ya que se trata de una variable local), qué es (una variable, no una función ni una clase ni un espacio de nombres) y dónde está declarada (en la línea 1314, unas cuantas de líneas más arriba en el código fuente).

En el contexto actual, el símbolo sobre el que se ha situado el cursor del ratón no posee documentación asociada. En este ejemplo, si el cursor del ratón hubiera estado sobre el símbolo get_this_mpi_process de la línea 1318, la información mostrada habría sido esta:

Aquí, KDevelop ha obtenido referencias cruzadas de la declaración de un archivo completamente distinto (utilities.h, que incluso pertenece a un proyecto distinto de la misma sesión) junto con el comentario al estilo de doxygen que acompaña a la declaración en dicho archivo.

Lo que convierte a estas ayudas emergentes en más útiles es el hecho de que son dinámicas: es posible pulsar sobre el contenedor para obtener información sobre el contexto en el que se ha declarado la variable (es decir sobre el espacio de nombres System, así como dónde se ha declarado, definido, usado o cuál es su documentación); también es posible pulsar sobre los enlaces azules que reiniciarán la posición del cursor en la declaración del símbolo (por ejemplo en la línea 289 de utilities.h) o proporcionar una lista de lugares donde se usa este símbolo en el archivo actual o en todos los proyectos de la sesión actual. Esto último resulta bastante útil si se quiere explorar, por ejemplo, cómo se usa una determinada función en un gran proyecto de código.

Nota

La información de la ayuda emergente es fugaz: depende de que mantenga pulsada la tecla Alt o de la situación del cursor del ratón. Si desea un lugar permanente para ella, abra la vista de la herramienta Navegador de código en una de las ventanas secundarias. Por ejemplo, aquí el cursor está sobre la misma función que en el ejemplo anterior, y la vista de la herramienta de la izquierda presenta el mismo tipo de información que se mostraba en la ayuda emergente anterior:

Al mover el cursor en la parte de la derecha se modifica la información presentada en la parte de la izquierda. Aún más, si pulsa el botón Bloquear la vista actual que hay en la parte superior derecha podrá bloquear esta información, haciéndola independiente del movimiento del cursor mientras explora la información allí presentada.

Nota

Este tipo de información de contexto está disponible en muchas partes de KDevelop, no solo en el editor de código fuente. Por ejemplo, si mantiene pulsada la tecla Alt en una lista de completado (por ejemplo, cuando está haciendo una apertura rápida), también se muestra una información de contexto sobre el símbolo actual.

Información del ámbito de los archivos

El siguiente nivel superior es para obtener información sobre todo el archivo de código fuente en el que está trabajando actualmente. Para este fin, posicione el cursor en el ámbito del archivo en el archivo actual y mire lo que le muestra la vista de la herramienta Navegador de código:

Aquí se muestra una lista de espacios de nombres, clases y funciones declaradas o definidas en el archivo actual, proporcionándole un resumen de lo que está ocurriendo en dicho archivo y los modos de saltar directamente a cualquiera de estas declaraciones o definiciones sin que sea necesario desplazarse arriba y abajo por el archivo o buscar un símbolo en particular.

Nota

La información mostrada para el ámbito del archivo es la misma que se presenta en el modo Esquema, discutido más adelante, para navegar por el código fuente; la diferencia es que el modo de esquema es solo una ventana emergente temporal.

Información del ámbito del proyecto y de la sesión

Existen diferentes maneras de obtener información sobre un proyecto completo (o, de hecho, sobre todos los proyectos de una sesión). Este tipo de información se proporciona normalmente mediante el uso de distintas vistas de herramientas. Por ejemplo, la vista de la herramienta Clases proporciona una estructura en forma de árbol de todas las clases y espacios de nombres circundantes de todos los proyectos de una sesión, junto a las funciones y variables miembros de cada una de dichas clases:

Si sitúa el cursor sobre una entrada se le vuelve a mostrar información sobre dicho símbolo, las posiciones de su declaración y de su definición y su uso. Si hace doble clic sobre una entrada en la vista de árbol, se abrirá una ventana de edición que mostrará la posición donde se declara o define el símbolo.

Pero también existen otros modos de mostrar información global. Por ejemplo, la herramienta Documentos proporciona una vista de un proyecto referente a los tipos de archivos o de otros documentos que contiene el proyecto:

El resaltado con los colores del arcoíris explicado

KDevelop usa diversos colores para resaltar diferentes objetos en el código fuente. Si sabe lo que significan los distintos colores podrá obtener bastante información del código fuente con solo mirar los colores, sin necesidad de leer el código. Las reglas de resaltado son las siguientes:

  • Los objetos de los tipos «class», «struct» y «enum» (los valores y el tipo), las funciones (globales) y los miembros de las clases tienen cada uno su propio color asignado: para las clases es el verde, los enumeradores se muestran en rojo oscuro y los miembros de una clase en amarillo oscuro o en morado; las funciones (globales) se muestran siempre en morado.

  • Todas las variables globales se muestran en color verde oscuro.

  • Los identificadores que son «typedefs» para otros tipos se muestran en color verde azulado.

  • Todas las declaraciones y definiciones de objetos están en negrita.

  • Si un miembro se accede dentro del contexto donde está definido (clase base o derivada) se muestra en amarillo; en caso contrario se muestra en morado.

  • Si un miembro es privado o protegido, se muestra en un color algo más oscuro cuando se usa.

  • Para las variables locales en el ámbito del cuerpo de una función se escogen colores del arcoíris basándose en un hash del identificador. Esto también es válido para los parámetros de la función. Un identificador siempre tendrá el mismo color dentro de su ámbito (aunque el mismo identificador tendrá distinto color si representa diferentes objetos, es decir, si se vuelve a definir en un ámbito más anidado), y normalmente también tendrá el mismo color para identificadores con el mismo nombre en distintos ámbitos. De este modo, si tiene diferentes funciones que tienen parámetros con los mismos nombres, todos los argumentos serán del mismo color. Este tipo de coloración basado en el arcoíris se puede desactivar de forma independiente de la coloración global en el diálogo de preferencias.

  • Los identificadores para los que KDevelop no puede determinar la correspondiente declaración se colorean en blanco. A veces, esto se debe a la ausencia de directivas #include.

  • Además de dicha coloración, se aplicará el resaltado de sintaxis normal del editor, como lo hace Kate. El resaltado semántico de KDevelop tendrá preferencia sobre el resaltado del editor en caso de conflicto.