Asignación de dependencias con mapas de código
En este artículo, aprenderá a visualizar las dependencias del código mediante mapas de código.
¿Qué son los mapas de código?
En Visual Studio, los mapas de código le ayudan a ver más rápidamente cómo encaja el código del programa sin leer archivos y líneas de código. Con estos mapas, puede ver la organización y las relaciones del código, incluida su estructura y sus dependencias, cómo actualizarla y calcular el costo de los cambios propuestos.
Las dependencias de código se pueden asignar en los siguientes lenguajes:
Visual C# o Visual Basic .NET en una solución o ensamblados (.dll o .exe)
Código de C o C++ nativo o administrado en proyectos de Visual C++, archivos de encabezado (.h o
#include
) o archivos binariosProyectos y ensamblados de X++ creados desde módulos de .NET para Microsoft Dynamics AX
Nota
Para los proyectos que no son de C# o Visual Basic, hay menos opciones para iniciar un mapa de código o agregar elementos a un mapa de código existente. Por ejemplo, no podrá hacer clic con el botón secundario en un objeto en el editor de texto de un proyecto de C++ y agregarlo a un mapa de código. Sin embargo, puede arrastrar y colocar elementos de código individuales o archivos desde el Explorador de soluciones, la Vista de clases y el Examinador de objetos.
Requisitos previos
Para crear un mapa de código en Visual Studio, instale primero los componentes Mapa de código y Validación de dependencias en directo.
Para crear y editar mapas de código, necesita Visual Studio Enterprise. No obstante, en las ediciones Community y Professional de Visual Studio, puede abrir diagramas que se generaron en la edición Enterprise, pero no puede editarlos.
Nota
Antes de compartir los mapas creados en Visual Studio Enterprise con otros usuarios que usen Visual Studio Professional, asegúrese de que todos los elementos del mapa son visibles (por ejemplo, los elementos ocultos, los grupos expandidos y los vínculos entre grupos).
Incorporación de un mapa de código
Puede crear un mapa de código vacío y arrastrar elementos a él, como referencias de ensamblado, archivos y carpetas, o bien puede generar un mapa de código para toda la solución o parte de ella.
Para agregar un mapa de código vacío:
En el Explorador de soluciones, abra el menú contextual del nodo de la solución de nivel superior. Elija Agregar>Nuevo elemento.
En el cuadro de diálogo Agregar nuevo elemento, en Instalado, elija la categoría General.
Elija la plantilla Documento de gráfico dirigido (.dgml) y, a continuación, seleccione Agregar.
Sugerencia
Es posible que esta plantilla no aparezca en orden alfabético, así que desplácese hacia abajo hasta la parte inferior de la lista de plantillas si no la ve.
Aparece un mapa en blanco en la carpeta Elementos de la solución de su solución.
De forma similar, puede crear un nuevo archivo de mapa de código sin agregarlo a la solución seleccionando Arquitectura>Nuevo mapa de código o Archivo>Nuevo>Archivo.
Más información:
- Compartir mapas de código
- Creación de mapas de código para C++
- Mejora del rendimiento del mapa de código
Generación de un mapa de código para la solución
Para ver todas las dependencias de la solución:
En la barra de menús, seleccione Arquitectura>Generar mapa de código para la solución. Si el código no ha cambiado desde la última vez que se compiló, puede seleccionar Arquitectura>Generar mapa de código para una solución sin compilación en su lugar.
Se genera un mapa que muestra los ensamblados de nivel superior y los vínculos agregados entre ellos. Cuanto más amplio sea el vínculo agregado, más dependencias representará.
Use el botón Leyenda situado en la barra de herramientas del mapa de código para mostrar u ocultar la lista de iconos de tipo de proyecto (por ejemplo, proyectos de prueba, web y teléfono), los elementos de código (por ejemplo, clases, métodos y propiedades) y los tipos de relación (por ejemplo, “Se hereda de”, “Implementa” y “Llama a”).
Esta solución de ejemplo contiene carpetas de solución (Pruebas y Componentes), proyectos de prueba, proyectos web y ensamblados. De forma predeterminada, todas las relaciones de contención aparecen como gruposque se pueden expandir y contraer. El grupo Externos contiene cualquier elemento que esté fuera de la solución, incluidas las dependencias de plataforma. En los ensamblados externos solo se muestran los elementos que están en uso. De forma predeterminada, los tipos base del sistema están ocultos en el mapa para reducir la acumulación de elementos.
Para profundizar en el mapa, expanda los grupos que representan proyectos y ensamblados. Puede expandir todo si presiona CTRL+A para seleccionar todos los nodos y, después, elige Grupo, Expandir en el menú contextual.
No obstante, puede que esto no resulte útil en el caso de soluciones grandes. De hecho, con soluciones complejas, las limitaciones de memoria pueden impedirle expandir todos los grupos. En su lugar, expanda un nodo individual para explorarlo. Mueva el puntero del mouse sobre el nodo y luego haga clic en el botón de contenido adicional (flecha hacia abajo) cuando aparezca.
También puede usar el teclado: seleccione el elemento y luego presione la tecla más (+). Para explorar niveles de código más profundos, haga lo mismo para los espacios de nombres, los tipos y los miembros.
Sugerencia
Para más información sobre cómo trabajar con mapas de código mediante el mouse, el teclado y la entrada táctil, consulte Examinar y reorganizar mapas de código.
Para simplificar el mapa y centrarse en partes individuales, elija Filtros en la barra de herramientas del mapa de código y seleccione únicamente los tipos de nodos y los vínculos que le interesan. Por ejemplo, puede ocultar todos los contenedores de la carpeta de soluciones y los ensamblados.
Otra manera de simplificar el mapa es ocultar o quitar grupos y elementos individuales, sin que ello afecte al código subyacente de la solución.
Para ver las relaciones entre los elementos, selecciónelos en el mapa. Los colores de los vínculos indican los tipos de relación, tal como se muestra en el panel Leyenda .
En este ejemplo, los vínculos de color púrpura son llamadas, los vínculos con puntos son referencias y los vínculos de color azul claro son acceso a campos. Los vínculos verdes pueden ser herencia o pueden ser vínculos agregados que indican más de un tipo de relación (o categoría).
Sugerencia
Si ve un vínculo verde, podría no significar únicamente que hay una relación de herencia. También puede haber llamadas de método, ocultas por la relación de herencia. Para ver determinados tipos de vínculos, use las casillas del panel Filtros para ocultar los tipos que no le interesan.
Para más información sobre un elemento o vínculo, mueva el puntero por encima hasta que aparezca información. De este modo se mostrarán los detalles de un elemento de código o las categorías que representa un vínculo.
Para examinar los elementos y las dependencias representados por un vínculo agregado, primero seleccione el vínculo y luego abra su menú contextual. Elija Mostrar vínculos de contribución (o Mostrar vínculos de contribución en el nuevo mapa de código). De este modo se expanden los grupos en ambos extremos del vínculo y se muestran solo los elementos y dependencias que participan en el vínculo.
Para centrarse en partes específicas del mapa, puede continuar quitando los elementos que no le interesan. Por ejemplo, para ver los detalles en la vista de clases y miembros, simplemente filtre todos los nodos de espacios de nombres en el panel Filtros .
Otra manera de centrarse en un mapa de solución compleja consiste en generar un mapa nuevo que contenga los elementos seleccionados en un mapa existente. Mantenga presionada la tecla CTRL mientras selecciona los elementos en los que desea centrarse, abra el menú contextual y elija Nuevo gráfico desde selección.
El contexto contenedor se traslada al nuevo mapa. Oculte las carpetas de soluciones y cualquier otro contenedor que no desee ver mediante el panel Filtros.
Expanda los grupos y seleccione elementos en el mapa para ver las relaciones.
Consulte también:
- Examinar y reorganizar mapas de código
- Personalizar mapas de código mediante la edición de los archivos DGML
- Busque posibles problemas en el código mediante la ejecución de un analizador.
Visualización de dependencias
Suponga que debe realizar una revisión de código en unos archivos con cambios pendientes. Para ver las dependencias que hay en esos cambios, cree un mapa de código a partir de dichos archivos.
En Explorador de soluciones, seleccione los proyectos, referencias de ensamblado, carpetas, archivos, tipos o miembros que desee asignar.
En la barra de herramientas del Explorador de soluciones, elija Mostrar en mapa de código . O bien, abra el menú contextual de un elemento o un grupo de ellos y elija Mostrar en mapa de código.
También puede arrastrar elementos desde el Explorador de soluciones, la vista de clases o el examinador de objetos a un mapa de código nuevo o ya existente. Para incluir la jerarquía primaria para sus elementos, mantenga presionada la tecla Ctrl mientras arrastra los elementos, o bien use el botón Incluir elementos primarios en la barra de herramientas del mapa de código para especificar la acción predeterminada. También puede arrastrar archivos de ensamblado desde fuera de Visual Studio, por ejemplo desde el Explorador de Windows.
Nota
Cuando se agregan elementos de un proyecto que se comparte entre varias aplicaciones, como Windows Phone o Microsoft Store, esos elementos aparecen en el mapa con el proyecto de aplicación activo actualmente. Si cambia el contexto a otro proyecto de aplicación y agrega más elementos del proyecto compartido, dichos elementos aparecerán ahora con el nuevo proyecto de aplicación activo. Las operaciones que se realizan con un elemento en el mapa solo se aplican a los elementos que comparten el mismo contexto.
El mapa muestra los elementos seleccionados dentro de los ensamblados que los contienen.
Para explorar los elementos, expándalos. Mueva el puntero del mouse sobre un elemento y luego haga clic en el botón de contenido adicional (flecha hacia abajo) cuando aparezca.
Para expandir todos los elementos, selecciónelos mediante Ctrl+A y, luego, abra el menú contextual del mapa y elija Grupo>Expandir. Sin embargo, esta opción no está disponible si el hecho de expandir todos los grupos genera un mapa que no se puede usar o problemas de memoria.
Continúe expandiendo los elementos que le interesen hasta el nivel de clase y miembro si es necesario.
Para ver los miembros que están en el código pero no aparecen en el mapa, haga clic en el icono Volver a obtener elementos secundarios en la esquina superior izquierda de un grupo.
Para ver más elementos relacionados con los del mapa, seleccione uno y elija Mostrar relacionados en la barra de herramientas del mapa de código, y luego seleccione el tipo de elementos relacionados que se agregarán al mapa. Si lo prefiere, seleccione uno o más elementos, abra el menú contextual y, después, elija la opción Mostrar para el tipo de elementos relacionados que desea agregar al mapa. Por ejemplo:
Para un ensamblado, elija:
Opción Descripción Mostrar ensamblados a los que este hace referencia Agregue los ensamblados a los que este ensamblado hace referencia. Los ensamblados externos aparecen en el grupo Externos . Mostrar ensamblados que hacen referencia a este Agregue los ensamblados de la solución que hacen referencia a este ensamblado. Para un espacio de nombres, elija Mostrar ensamblado contenedor, si no está visible.
Para una clase o interfaz, elija:
Opción Descripción Mostrar tipos base Para una clase, agregue la clase base, así como las interfaces implementadas.
Para una interfaz, agregue las interfaces base.Mostrar tipos derivados Para una clase, agregue las clases derivadas.
Para una interfaz, agregue las interfaces derivadas y las clases o structs de implementación.Mostrar tipos a los que este hace referencia Agregue todas las clases y los miembros que esta clase utilice. Mostrar tipos que hacen referencia a este Agregue todas las clases y los miembros que usan esta clase. Mostrar espacio de nombres contenedor Agregue el espacio de nombres primario. Mostrar espacio de nombres y ensamblado contenedores Agregue la jerarquía de contenedores principales. Mostrar todos los tipos base Agregue la jerarquía de interfaz o de clase base de forma recursiva. Mostrar todos los tipos derivados Para una clase, agregue todas las clases derivadas de forma recursiva.
Para una interfaz, agregue todas las interfaces derivadas y clases o structs de implementación de forma recursiva.Para un método, elija:
Opción Descripción Mostrar métodos a los que este llama Agregue los métodos a los que llama este método. Mostrar campos a los que este hace referencia Agregue los campos a los que hace referencia este método. Mostrar tipo contenedor Agregue el tipo primario. Mostrar tipo, espacio de nombres y ensamblado contenedores Agregue la jerarquía de contenedores principales. Mostrar métodos invalidados Para obtener un método que invalide otros métodos o que implemente un método de una interfaz, agregue todo el resumen o los métodos virtuales en las clases base invalidadas y, si existe, el método de interfaz implementado. Para un campo o propiedad, elija:
Opción Descripción Mostrar tipo contenedor Agregue el tipo primario. Mostrar tipo, espacio de nombres y ensamblado contenedores Agregue la jerarquía de contenedores principales. El mapa muestra las relaciones. En este ejemplo, el mapa muestra los métodos llamados por el método
Find
y su ubicación en la solución o externa.Para simplificar el mapa y centrarse en partes individuales, elija Filtros en la barra de herramientas del mapa de código y seleccione únicamente los tipos de nodos y los vínculos que le interesan. Por ejemplo, desactive la visualización de carpetas de soluciones, ensamblados y espacios de nombres.
Contenido relacionado
- Compartir mapas de código
- Creación de mapas de código para C++
- Mejora del rendimiento del mapa de código
- Usar mapas de código para depurar aplicaciones
- Asignar métodos en la pila de llamadas durante la depuración
- Buscar posibles problemas mediante analizadores de mapas de código
- Examinar y reorganizar mapas de código
- Personalizar mapas de código mediante la edición de los archivos DGML