Cómo: Generar gráficos de dependencia para código .NET

Para explorar la organización y las relaciones en el código .NET, utilice Visual Studio Ultimate para generar gráficos de dependencia. Use estos gráficos para visualizar, explorar y analizar las dependencias existentes en el código. Un gráfico representa elementos de código y sus relaciones como un conjunto de nodos que están conectados mediante vínculos o bordes.

Nota

Si tiene una solución muy grande, generar un gráfico de dependencias podría producir una excepción de memoria insuficiente. Si esto se produce, reduzca el ámbito de la solución. También puede utilizar el Explorador de arquitectura para seleccionar los proyectos y las dependencias que desea visualizar y, a continuación, generar el gráfico.

Para generar gráficos de dependencias para código C y C++ y para proyectos web, descargue e instale Paquete de características de modelado y visualización de Microsoft Visual Studio 2010.

Para obtener más información, vea:

Elegir un gráfico de dependencias para generarlo

Visual Studio Ultimate permite generar rápidamente documentos de gráfico para explorar las dependencias del código. Para generar documentos de gráficos utilizando una herramienta de la línea de comandos, vea Generar documentos de gráfico para procesamiento por lotes.

Para

Generar un gráfico en el que se muestren las relaciones

Ver información general del código fuente

Entre todos los ensamblados, todos los espacios de nombres o todas las clases de una solución de Visual Studio.

En el gráfico se muestran las dependencias agregadas de los nodos del nivel superior seleccionado.

Ver las dependencias concretas del código fuente

Entre las áreas seleccionadas del código fuente de una solución de Visual Studio.

Use el Explorador de arquitectura para examinar la jerarquía del código y seleccionar tipos concretos de estructuras y relaciones.

Ver información general del código compilado

En uno o varios archivos de ensamblados .NET (.dll) o archivos ejecutables (.exe)

Ver las dependencias concretas del código compilado

Entre las áreas seleccionadas de los archivos de ensamblados .NET (.dll) o ejecutables (.exe).

Use el Explorador de arquitectura para examinar y seleccionar tipos concretos de estructuras y relaciones.

Después de generar el gráfico, puede utilizarlo para explorar el código de maneras diferentes. Para obtener más información, vea Como: Explorar el código con gráficos de dependencia.

Ver información general del código fuente de una solución de Visual Studio

  1. Abra la solución.

  2. En el menú Arquitectura, elija Generar gráfico de dependencias y, a continuación, realice uno de los pasos siguientes:

    Haga clic en

    Para generar un gráfico en el que se muestren

    Por ensamblado

    Las dependencias agregadas entre todos los ensamblados generados por la solución y cualquier dependencia externa de la que dependan.

    Para ver los espacios de nombres, las clases y los métodos incluidos en un ensamblado, expanda el ensamblado en el gráfico. En los ensamblados externos solo se muestran los elementos que están en uso.

    Por espacio de nombres

    Las dependencias agregadas entre todos los espacios de nombres de la solución y cualquier espacio de nombres externo del que dependa el código.

    Para ver las clases y los métodos incluidos en un espacio de nombres, expanda el espacio de nombres en el gráfico. En los espacios de nombres externos solo se muestran los elementos que están en uso.

    Por clase

    Las dependencias agregadas entre todas las clases de la solución. No aparecerá ninguna información sobre las clases externas que se usan en el código.

    O bien

    Para ver las dependencias entre varios tipos de estructuras, haga clic en Personalizar.

    1. En el cuadro de diálogo Generar gráfico de dependencias, haga clic al menos en una de los cuadros siguientes: Ensamblados, Espacios de nombres, Tipos o Métodos.

    2. Use la tabla siguiente para filtrar el gráfico:

      Para

      Siga estos pasos

      Ver referencias a dependencias externas.

      Resulta útil para explorar el modo en que los ensamblados internos se compilan en ensamblados externos.

      Seleccione Externos.

      Ver exclusivamente los tipos y métodos con determinados niveles de acceso.

      Por ejemplo, es posible que desee simplificar el gráfico seleccionado solo los tipos públicos.

      Expanda el recuadro Filtro de acceso y, a continuación, seleccione los niveles que desee.

      NotaNota
      Debe seleccionar al menos un tipo de nivel de acceso.Para reducir el número de dependencias del gráfico, seleccione solo los niveles de acceso que desee para los métodos.

      Ver las dependencias de alto nivel mostrando las relaciones de contención como grupos anidados y las dependencias como vínculos agregados.

      NotaNota
      En los métodos, las dependencias aparecerán como vínculos individuales y no como vínculos agregados, ya que los métodos son los nodos hoja del nivel más bajo.

      Active la casilla Mostrar contenciones como grupo.

      Ver las dependencias de bajo nivel mostrando las relaciones de contención como nodos vinculados y las dependencias como vínculos individuales.

      Desactive la casilla Mostrar contenciones como grupo.

    3. Cuando termine, haga clic en Aceptar.

      Visual Studio crea un documento de gráfico dirigido (archivo .dgml) y lo abre.

    El grosor del vínculo de una dependencia agregada indica aproximadamente el número de dependencias individuales que representa. Para ver los tipos de dependencias que el vínculo representa, mueva el puntero sobre el vínculo hasta que la información sobre herramientas aparezca.

    Nota

    Los gráficos de dependencias que genera desde el menú Arquitectura no muestran las llamadas a métodos virtuales por debajo del tipo más derivado. En su lugar, muestran las dependencias en los tipos que declaran esos miembros virtuales. Sin embargo, puede usar la Vista de clases del Explorador de arquitectura para encontrar esas llamadas. Después, puede arrastrarlas desde el Explorador de arquitectura hasta un gráfico existente o puede generar un nuevo gráfico desde la barra de herramientas del Explorador de arquitectura.

Ver dependencias concretas del código fuente de una solución de Visual Studio

Use el Explorador de arquitectura para encontrar el código y las relaciones que desea visualizar. También puede emplear consultas predefinidas para generar un gráfico.

  1. Abra la solución.

  2. Si el Explorador de arquitectura no está abierto, en el menú Arquitectura, elija Windows y, a continuación, haga clic en Explorador de arquitectura.

  3. En la primera columna del Explorador de arquitectura, en Visual Studio, haga clic en una de las siguientes vistas:

    • Vista de clases para explorar la jerarquía lógica del código.

      Se usa para explorar los espacios de nombres, tipos, métodos, etc.

    • Vista de solución para explorar la jerarquía física del código

      Se usa para examinar los proyectos, archivos de código fuente, etc.

  4. En la columna siguiente, seleccione los ensamblados que desee explorar. Para seleccionar todos los elementos de la columna, presione CTRL+A.

    En la columna siguiente se muestran los elementos relacionados con la selección en función de las relaciones y los tipos de elementos predeterminados de esa columna.

    Nota

    Para seleccionar otros tipos de elementos y relaciones, expanda la columna contraída situada a la derecha de la columna con los elementos seleccionados. En Navegación de nodo, seleccione los tipos de elementos que desee. En Navegación saliente o Navegación entrante, seleccione los tipos de relaciones que desee. Para obtener más información, vea Cómo: Buscar código mediante el explorador de arquitectura.

  5. Repita el paso 4 hasta seleccionar todos los elementos que desee.

    Nota

    Para incluir las dependencias Llama a en el gráfico, busque y seleccione todos los métodos invocados por las clases seleccionadas.

  6. Para crear un nuevo gráfico a partir de la selección, bajo la barra de título del Explorador de arquitectura, haga clic en Crear un nuevo documento de gráfico a partir de todos los nodos seleccionados.

    Visual Studio crea un documento de gráfico dirigido (archivo .dgml) y lo abre.

    O bien

    Para agregar la selección a un gráfico existente o a un gráfico en blanco, siga estos pasos:

    1. Abra el archivo .dgml del gráfico existente o cree un gráfico en blanco.

    2. Bajo la barra de título del Explorador de arquitectura, haga clic en Agregar todos los nodos seleccionados al documento de gráfico visible actualmente.

      O bien

      Arrastre los nodos desde el Explorador de arquitectura hasta el gráfico.

Crear un gráfico en blanco

  1. Para abrir un gráfico en blanco, en el menú Archivo, elija Nuevo y, a continuación, haga clic en Archivo.

    O bien

    Para agregar un gráfico en blanco a la carpeta Elementos de la solución, en el Explorador de soluciones, haga clic con el botón secundario en el nodo de solución del nivel superior y, a continuación, haga clic en Agregar nuevo elemento.

  2. En Plantillas instaladas, haga clic en General.

  3. En el recuadro derecho, haga clic en Documento de gráfico dirigido, asigne un nombre al gráfico y, a continuación, haga clic en Agregar.

Para obtener más información sobre los distintos modos en los que puede interactuar con el gráfico, haga clic en el vínculo de ayuda que aparece en el gráfico en blanco.

Explorar código fuente usando consultas predefinidas

  1. Abra la solución.

  2. Si el Explorador de arquitectura no está abierto, en el menú Arquitectura, elija Windows y, a continuación, haga clic en Explorador de arquitectura.

  3. En la primera columna del Explorador de arquitectura, en Consultas DGQL guardadas, haga clic en En carpetas.

  4. En la columna siguiente, haga clic en una de las siguientes consultas, en función del tipo de gráfico que desee crear:

    Para generar un gráfico en el que se muestren

    Haga clic en

    Todos los ensamblados a los que se hace referencia en la solución.

    A partir de los resultados de consulta, puede generar un gráfico en el que se muestren las dependencias entre estos ensamblados.

    All Assembly References.dgql

    Lista plana de todos los ensamblados de salida de la solución sin vínculos de dependencia.

    All Output Assemblies.dgql

    Para crear un gráfico de dependencias estándar de los ensamblados seleccionados, siga estos pasos:

    1. En la columna siguiente, seleccione los ensamblados que desee.

    2. En el lado derecho de la columna actual, haga clic en la columna de acción contraída para expandirla.

      NotaNota
      La columna de acción aparece resaltada cuando se desplaza el puntero sobre ella.
    3. En la columna de acción, en Comandos, haga clic en Gráfico estándar.

    Todos los proyectos de la solución.

    A partir de los resultados de la consulta, puede generar un gráfico en el que se muestren las referencias entre estos proyectos.

    All Project References.dgql

    Lista plana de todos los proyectos de la solución.

    Si la solución contiene las carpetas de la solución, esta lista será distinta de la que aparece si en el Explorador de arquitectura hace clic en Vista de solución.

    All Projects.dgql

    Todos los tipos de la solución.

    A partir de los resultados de la consulta, puede generar un gráfico en el que se muestren las relaciones de herencia entre estos tipos.

    Inheritance Graph.dgql

    En la columna siguiente se muestran los resultados como una lista plana. Aunque pueden existir vínculos entre estos nodos, no se mostrarán en el Explorador de arquitectura.

  5. Para generar un gráfico que incluya los vínculos de todos los elementos de la columna de resultados, siga estos pasos:

    1. En la columna de resultados, presione CTRL+A para seleccionar todos los elementos.

    2. Mantenga presionada la tecla CTRL para incluir solo los elementos de la columna actual del gráfico y, bajo la barra de título del Explorador de arquitectura, haga clic en Crear un nuevo documento de gráfico a partir de todos los nodos seleccionados.

      Visual Studio crea un documento de gráfico dirigido (archivo .dgml) y lo abre.

Ver información general del código compilado

  1. Cree un gráfico en blanco o abra el archivo .dgml de un gráfico existente.

  2. Desde el exterior de Visual Studio, arrastre el archivo .dll o .exe hasta el gráfico.

    Nota

    No se permite arrastrar elementos desde la carpeta Referencias del Explorador de soluciones. Solo puede arrastrar los ensamblados del Explorador de Windows si está ejecutando el Explorador de Windows y Visual Studio en el mismo nivel de permisos de Control de cuentas de usuario. Por ejemplo, si Control de cuentas de usuario está activado y está ejecutando Visual Studio como administrador, el Explorador de Windows bloqueará la operación de arrastre. Para evitar este problema, desactive Control de cuentas de usuario o use las consultas predefinidas para explorar la solución.

Ver las dependencias concretas del código compilado

  1. Si el Explorador de arquitectura no está abierto, en el menú Arquitectura, elija Windows y, a continuación, haga clic en Explorador de arquitectura.

  2. En la primera columna, en Sistema de archivos, haga clic en Seleccionar archivos.

  3. En el cuadro Abrir, busque los archivos .dll o .exe para seleccionarlos y abrirlos.

  4. En la columna siguiente, seleccione los ensamblados. Para seleccionar todos los elementos de la columna, presione CTRL+A.

    En la columna siguiente se muestran los elementos relacionados con la selección en función de las relaciones y los tipos de elementos predeterminados de esa columna.

    Nota

    Para seleccionar otros tipos de elementos y relaciones, expanda la columna contraída situada a la derecha de la columna con los elementos seleccionados. La columna de acción aparece resaltada cuando se desplaza el puntero sobre ella. En Navegación de nodo, seleccione los tipos de elementos que desee. En Navegación saliente o Navegación entrante, seleccione los tipos de relaciones que desee. Para obtener más información, vea Cómo: Buscar código mediante el explorador de arquitectura.

  5. Elija una de las siguientes opciones:

    Para crear un gráfico de dependencias a partir de los siguientes elementos

    Siga estos pasos

    Ensamblados

    1. En la parte derecha de la columna que contiene los ensamblados, haga clic en la columna de acción contraída para expandirla.

      La columna de acción aparece resaltada cuando se desplaza el puntero sobre ella.

    2. En la columna de acción, en Comandos, haga clic en Gráfico estándar.

    Clases y métodos

    1. Explore las clases y métodos y seleccione todos los elementos que desea incluir en el gráfico.

    2. Para crear un nuevo gráfico, bajo la barra de título del Explorador de arquitectura, haga clic en Crear un nuevo documento de gráfico a partir de todos los nodos seleccionados.

      Visual Studio crea un documento de gráfico dirigido (archivo .dgml) y lo abre.

      O bien

      Para agregar la selección a un gráfico existente o a un gráfico en blanco, siga estos pasos:

      1. Abra el archivo .dgml del gráfico existente o cree un gráfico en blanco.

      2. Bajo la barra de título del Explorador de arquitectura, haga clic en Agregar todos los nodos seleccionados al documento de gráfico visible actualmente.

        O bien

        Arrastre los nodos desde el Explorador de arquitectura hasta el gráfico.

Generar documentos de gráfico para procesamiento por lotes

Para generar documentos de gráfico (archivos .dgml) en modo por lotes, use la herramienta GraphCmd.exe de la línea de comandos. Por ejemplo, puede encontrar las dependencias que han cambiado entre las compilaciones si ejecuta la herramienta después de cada compilación.

Para encontrar esta herramienta, busque en la siguiente carpeta: C:\Archivos de programa\Microsoft Visual Studio 10.0\Common7\IDE.

Nota

GraphCmd.exe genera información de dependencia solo para ensamblados o archivos .dgml, no para el código fuente de archivos de proyecto o de solución de Visual Studio.

La sintaxis de GraphCmd.exe es la siguiente:

GraphCmd -? -all -exceptions -input File_Name -query File_Name -exec

"DGQL_Statement" -output File_Name -path alias=path

En la tabla siguiente se describen las opciones de GraphCmd.exe:

-?

Mostrar ayuda sobre GraphCmd.exe.

-all

Incluir todos los resultados de la consulta intermedios, no solo para el último conjunto de nodos.

-exceptions

Notificar las excepciones de la consulta como un archivo de documento de gráfico (.dgml).

-input Nombre de archivo

Procesar el archivo .dgml especificado.

Esto es útil para el procesamiento posterior de un archivo .dgml grande y su filtrado, de forma que pueda visualizarlo más fácilmente en Visual Studio.

-query Nombre de archivo

Ejecutar el archivo de Directed Graph Query Language (DGQL o .dgql) especificado.

Para obtener más información, vea:

-exec "Instrucción DGQL"

Ejecutar la instrucción DGQL especificada.

Para obtener más información, vea Introducción a Directed Graph Query Language (DGQL).

-output Nombre de archivo

Generar el archivo .dgml especificado.

-path alias=ruta de acceso

Especifique un nuevo alias que se usará en la entrada y salida de documentos DGML.

Por ejemplo:

GraphCmd -output MyGeneratedGraph.dgml -path "MyPathAlias=C:\Program Files\..."

Para obtener más información, vea Alias para rutas de acceso usadas con frecuencia.

Comentarios

GraphCmd.exe se ejecuta fuera de Visual Studio, por lo que la compatibilidad con acciones de consultas de .dgql es limitada.

Puede especificar varias veces las siguientes opciones: -input, -query, -exec y -path.

Alias para rutas de acceso usadas con frecuencia

Los alias para rutas de acceso usadas con frecuencia reducen el tamaño del archivo .dgml y el tiempo necesario para cargar o guardar el archivo. Para crear un alias, agregue una sección <Paths></Paths> al final del archivo .dgml. En esta sección, agregue un elemento <Path/> para definir un alias para la ruta de acceso:

<Paths>
   <Path Id="MyPathAlias" Value="C:\...\..." />
</Paths>

Para hacer referencia al alias desde un elemento del archivo .dgml, rodee el valor Id del elemento <Path/> con un signo de dólar ($) y paréntesis (()):

<Nodes>
   <Node Id="MyNode" Reference="$(MyPathAlias)MyDocument.txt" />
</Nodes>
<Properties>
   <Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
</Properties>

Para obtener más información sobre cómo editar archivos .dgml, vea Cómo: Editar y personalizar documentos de gráfico.

Introducción a Directed Graph Query Language (DGQL)

DGQL es un lenguaje de consultas ligero que puede usar para compilar DGML. Una instrucción DGQL sigue un modelo alternativo de selección de nodos y acciones de forma que cada selección de nodo crea la entrada para la siguiente acción, cuyo resultado se convierte en la entrada para la selección de nodo siguiente y así sucesivamente.

El formato de una instrucción DGQL es el siguiente:

<node selection> / <action> / <node selection> / <action> / ...

En la tabla siguiente se describe la sintaxis DGQL empleada para seleccionar nodos:

*

Seleccionar todos los nodos.

+ "text"

Seleccionar todos los nodos que contienen "text".

+ Id.Equals("text")

Seleccionar todos los nodos cuyo Id es igual a "text".

+ Background.Contains("text")

Seleccionar todos los nodos cuyo atributo Background tiene un valor que contiene la cadena "text".

+ "text1" + "text2" + ...

Seleccionar todos los nodos que coinciden con "text1" o "text2".

+ MyProperty="True"

Seleccionar todos los nodos que tienen una propiedad denominada MyProperty cuyo valor es "True".

- Label.Contains("text")

Seleccionar todos los nodos excepto los que tienen un atributo Label que Contains la cadena "text".

+ Category.Is("MyCategory")

Seleccionar todos los nodos que tienen una categoría denominada MyCategory o que hereda de MyCategory.

Los proveedores de datos DGML registrados en Visual Studio proporcionan acciones, pero puede detectar estas acciones guardando una consulta creada en el Explorador de arquitectura. Para obtener más información sobre cómo usar el Explorador de arquitectura, vea Cómo: Buscar código mediante el explorador de arquitectura.

En la tabla siguiente se describen ejemplos de acciones directas que se pueden realizar en los nodos seleccionados:

Acción de ejemplo

Descripción

Microsoft.Contains

Devolver todos los nodos contenidos por los nodos de entrada. Puede reemplazar Contains con una categoría de vínculo diferente.

Microsoft.Open

Abrir el código fuente para los nodos de entrada.

NotaNota
Solo funciona dentro de Visual Studio.

Microsoft.AllOutBoundLinks

Devolver todos los nodos que son el destino de un vínculo de salida de los nodos de entrada.

Microsoft.AllInboundLinks

Devolver todos los nodos que son el extremo de origen de un vínculo a los nodos de entrada.

Microsoft.Core.CreateGroupsByProperties

Invocar la acción GroupByProperties.

Microsoft.AllNodes

Devolver todos los nodos de todo el gráfico.

Las acciones controladas por datos seleccionan elementos basándose únicamente en los datos de los nodos y vínculos de entrada. Cuando se hacen coincidir categorías usando acciones controladas por datos, se incluyen las categorías heredadas. En la tabla siguiente se describen ejemplos de acciones controladas por datos:

Tipo

Descripción

Node:Both:Category

Devolver todos los nodos que tienen la categoría Category y están conectados con los nodos de entrada por un vínculo que señala en cualquier dirección.

Link:Both:Category

Devolver todos los nodos que están conectados con los nodos de entrada por un vínculo que señala en cualquier dirección y tienen la categoría Category.

Link:Backward:Category

Devolver todos los nodos que señalan a los nodos de entrada con un vínculo que tiene la categoría Category.

Link:Forward:Category

Devolver todos los nodos que señalan desde los nodos de entrada con un vínculo que tiene la categoría Category.

Sugerencias

  • Normalmente, hay una acción "predeterminada" para un conjunto dado de nodos de entrada, que el Explorador de arquitectura selecciona automáticamente. Para obtener el mismo comportamiento, use una acción vacía: //

  • El espacio en blanco no es significativo en DGQL, por lo que puede dar formato a la consulta para que quepa en una línea si es necesario. Esto es útil cuando se emplea la opción –exec con GraphCmd.

  • Al depurar DGQL, use la acción "Execute Expanded" en el Explorador de arquitectura para ayudarle a ver cada paso de la consulta y encontrar el paso que no está generando los resultados esperados.

Ejemplo

La siguiente instrucción DGQL realiza una consulta como se describe en los pasos siguientes:

+ Id.Equals("Microsoft.Solution.ClassView") / "Microsoft.Solution.ClassView" / * / "Node:Both:CodeSchema_Class" / + CodeSchemaProperty_IsPublic.Equals("True")
  1. Empieza seleccionando el nodo Vista de clases en la primera columna del Explorador de arquitectura.

  2. Realiza la acción "Microsoft.Solution.ClassView", devolviendo todos los espacios de nombres de la solución. 

  3. Usa * para seleccionar todos los espacios de nombres.

  4. Seleccione todos los nodos que tienen la categoría CodeSchema_Class y que están relacionados con esos espacios de nombres por un vínculo en cualquier dirección. Normalmente serán vínculos de contención.

  5. Filtra las clases resultantes solo a las que tienen la propiedad CodeSchemaProperty_IsPublic="True".

Técnicamente, la acción "Microsoft.Solution.ClassView" es innecesaria porque es la acción "predeterminada" para el nodo Vista de clases. Por tanto, puede reemplazar esa acción con // para simplificar la consulta y que quepa en una única línea de la manera siguiente:

+Id.Equals("Microsoft.Solution.ClassView")//*/"Node:Both:CodeSchema_Class"/+CodeSchemaProperty_IsPublic.Equals("True")

Vea también

Tareas

Cómo: Guardar, compartir y exportar documentos gráficos

Conceptos

Visualizar código

Otros recursos

Como: Explorar el código con gráficos de dependencia

Cómo: Navegar y examinar los documentos de gráfico

Cómo: Editar y personalizar documentos de gráfico