Partilhar via


Como: Gere gráficos de dependência para.NET de código

Para explorar a organização e os relacionamentos.NET código, use Visual Studio Ultimate para gerar gráficos de dependência. Use estes gráficos para ajudá-lo a visualizar, explorar e analisar dependências no código. Um gráfico representa os elementos de código e suas relações, como um conjunto de nós que estão conectados por links ou bordas.

ObservaçãoObservação

Se você tiver uma solução muito grande, gerar um gráfico de dependência pode causar uma exceção de memória de insuficiente. Se isso ocorrer, reduza o escopo de sua solução. Você pode também usar o Explorer de arquitetura para selecionar os projetos e as dependências que você deseja visualizar e então gerar o gráfico.

Para gerar gráficos de dependência para código c e C++ e para projetos Web, baixe e instale Microsoft Visual Studio 2010 Visualization and Modeling Feature Pack.

Para obter mais informações, consulte:

Escolha um gráfico de dependência para gerar

Visual Studio Ultimatepermite gerar documentos de gráfico rapidamente para explorar dependências no código. Para gerar documentos de gráfico usando uma ferramenta de linha de comando, consulte Gerar documentos de gráfico para processamento em lote.

Para

Gerar um gráfico que mostra as relações

Consulte uma visão geral do código-fonte

Entre todos os assemblies, todos os namespaces ou todas as classes em um Visual Studio solução.

O gráfico mostra as dependências de agregados de nível superior de nós que você selecionou.

Consulte as dependências específicas no código-fonte

Entre as áreas selecionadas de código fonte em um Visual Studio solução.

Use Explorer de arquitetura para procurar o código hierarquicamente e selecionar a tipos específicos de estruturas e relacionamentos.

Consulte uma visão geral do código compilado

Em uma ou várias.Os arquivos de assembly NET (. dll) ou executável (. exe)

Consulte as dependências específicas no código compilado

Entre as áreas selecionadas no.NET assembly (. dll) ou arquivos executáveis (. exe).

Use Explorer de arquitetura para procurar e selecionar os tipos específicos de estruturas e relacionamentos.

Depois de gerar o gráfico, você pode usá-lo para explorar o código de maneiras diferentes. Para obter mais informações, consulte Como: Explore o código com gráficos de dependência.

Consulte uma visão geral do código-fonte em uma solução de Visual Studio

  1. Abra a solução.

  2. Sobre o arquitetura , aponte para Gerar o gráfico de dependênciae, em seguida, execute uma das seguintes etapas:

    Clique em

    Para gerar um gráfico que mostra

    Por conjunto

    Agregados dependências entre todos os assemblies produzidos por sua solução e quaisquer dependências externas, eles dependem.

    Para ver os namespaces, classes e métodos dentro de um assembly, expandem o assembly no gráfico. Conjuntos de módulos externos mostram somente os itens que estão em uso.

    Por Namespace

    Agregados dependências entre todos os namespaces em sua solução e namespaces externos que o código depende.

    Para ver as classes e métodos dentro de um namespace, expanda o namespace no gráfico. Namespaces externos mostram somente os itens que estão em uso.

    Por classe

    Agregados dependências entre todas as classes em sua solução. Nenhuma informação sobre classes externas usadas pelo código aparecerá.

    - ou -

    Para ver as dependências em vários tipos de estruturas, clique em personalizado.

    1. No Gerar o gráfico de dependência caixa de diálogo, clique em pelo menos uma das seguintes caixas: Assemblies, Namespaces, tipos, ou métodos.

    2. Use a tabela a seguir para filtrar o gráfico:

      Para

      Execute essas etapas.

      Consulte as referências de dependências externas.

      Isso é útil para explorar a compilação de assemblies como interno em assemblies externos.

      Selecione itens externos

      Consulte apenas esses tipos e métodos com os níveis de acesso específico.

      Por exemplo, convém para simplificar o gráfico selecionando apenas os tipos públicos.

      Expanda o Filtro de acesso painel e selecione os níveis que você deseja.

      ObservaçãoObservação
      Você deve selecionar pelo menos um nível de acesso de tipo.Para reduzir o número de dependências no gráfico, selecione os níveis de acesso que você deseja para métodos.

      Consulte as dependências de alto nível, mostrando as relações de confinamento como grupos aninhados e dependências como links agregados.

      ObservaçãoObservação
      Para métodos, dependências aparecerá como links individuais, links agregados não porque os métodos são os nós de folha de nível mais baixo.

      Selecione o Confinamento de mostrar como grupo caixa.

      Consulte as dependências de baixo nível, mostrando as relações de confinamento como nós vinculado e dependências como links individuais.

      Limpar o Confinamento de mostrar como grupo caixa.

    3. Quando você tiver terminado, clique em OK.

      Visual Studiocria um gráfico direcionado de documento (arquivo de .dgml) e o abre.

    A espessura do link de dependência agregada indica aproximadamente quantos individuais dependências representando a dependência de agregados. Para ver os tipos de dependências que a link representa, mova o ponteiro sobre o link até que a dica de ferramenta apareça.

    ObservaçãoObservação

    Gráficos de dependência para gerar a partir de arquitetura menu não mostrar chamadas para métodos virtuais para o tipo mais derivado. Em vez disso, eles mostram dependências nos tipos de declarar esses membros virtuais. No entanto, você pode usar o modo de exibição de classe em Explorer de arquitetura para localizar essas chamadas. Pode em seguida, arraste-os do Explorer de arquitetura para um gráfico existente, ou você pode gerar um novo gráfico da Explorer de arquitetura barra de ferramentas.

Consulte as dependências específicas no código de origem em uma solução de Visual Studio

Use Explorer de arquitetura para encontrar o código e os relacionamentos que você deseja visualizar. Você também pode usar consultas predefinidas para gerar um gráfico.

  1. Abra a solução.

  2. Se Explorer de arquitetura não está aberto no arquitetura , aponte para Windowse, em seguida, clique em Explorer de arquitetura.

  3. Na primeira coluna de Explorer de arquitetura, em Visual Studio, clique em um dos seguintes modos:

    • Exibição de classe para explorar a hierarquia lógica do código.

      Use para procurar namespaces, tipos, métodos e assim por diante.

    • Modo de exibição de solução para explorar a hierarquia física do código

      Use para procurar projetos, arquivos de origem e assim por diante.

  4. Na próxima coluna, selecione os itens que você deseja explorar. Para selecionar tudo na coluna, pressione ctrl + A.

    A próxima coluna mostra os itens que estão relacionadas à sua seleção com base nos tipos padrão de itens e relacionamentos para essa coluna.

    ObservaçãoObservação

    Para selecionar outros tipos de itens e relacionamentos, expanda a coluna recolhida à direita da coluna com suas seleções. Em Nó de navegação, selecione os tipos de itens que deseja. Em Saída navegação ou De entrada de navegação, selecione os tipos de relacionamentos que você deseja. Para obter mais informações, consulte Como: Localizar o código usando o Explorer de arquitetura.

  5. Repita a etapa 4 até que você selecione os itens que você deseja.

    ObservaçãoObservação

    Para incluir chamadas dependências em seu gráfico, procure e selecione todos os métodos são chamados de suas classes selecionados.

  6. Para criar um novo gráfico de sua seleção na Explorer de arquitetura a barra de título, clique em criar um novo documento do gráfico de todos os nós.

    Visual Studiocria um gráfico direcionado de documento (arquivo de .dgml) e o abre.

    - ou -

    Para adicionar sua seleção para um gráfico existente ou para um gráfico em branco, siga estas etapas:

    1. Abra o arquivo de .dgml do gráfico existente, ou criar um gráfico em branco.

    2. Sob o Explorer de arquitetura a barra de título, clique em Adicionar todos os nós selecionados para o documento do gráfico visível no momento.

      - ou -

      Arraste os nós de Explorer de arquitetura para o gráfico.

Criar um gráfico em branco

  1. Para abrir um gráfico em branco, no arquivo , aponte para novae em seguida, clique em arquivo.

    - ou -

    Para adicionar um gráfico em branco para o Itens de solução pasta, na Solution Explorer, o botão direito do mouse no nó da solução de nível superior e, em seguida, clique em Add New Item.

  2. Em Modelos instalados, clique em Geral.

  3. No painel direito, clique em Documento direcionado de gráfico, nomeie o gráfico e, em seguida, clique em Add.

Para obter mais informações sobre as diferentes maneiras que você pode interagir com o gráfico, clique no link de Ajuda que aparece no gráfico em branco.

Explore o código-fonte usando consultas predefinidas

  1. Abra a solução.

  2. Se Explorer de arquitetura não está aberto no arquitetura , aponte para Windowse, em seguida, clique em Explorer de arquitetura.

  3. Na primeira coluna de Explorer de arquitetura, em Consultas salvas de DGQL, clique em Em pastas.

  4. Na próxima coluna, clique em uma das consultas a seguir, dependendo do tipo de gráfico que você deseja criar:

    Para gerar um gráfico que mostra

    Clique em

    Todos os assemblies referenciados pela solução.

    Dos resultados da consulta, você pode gerar um gráfico que mostra as dependências entre esses assemblies.

    Todos os References.dgql de Assembly

    Uma lista simples de todos os assemblies de saída na solução sem links de dependência.

    Todos os Assemblies.dgql de saída

    Para gerar um gráfico de dependência padrão assemblies selecionados, siga estas etapas:

    1. Na próxima coluna, selecione os assemblies que desejar.

    2. No lado direito da coluna atual, clique na coluna de ação recolhido para expandi-la.

      ObservaçãoObservação
      A coluna de ação aparece realçada quando você move o ponteiro sobre ele.
    3. Na coluna ação, em comandos, clique em Gráfico padrão.

    Todos os projetos na solução.

    Dos resultados da consulta, você pode gerar um gráfico que mostra as referências entre esses projetos.

    Todos os References.dgql de projeto

    Uma lista simples de todos os projetos na solução.

    Se sua solução inclui pastas de solução, essa lista é diferente daquele mostrado quando você clicar em o modo de exibição de solução no Explorer de arquitetura.

    Todos os Projects.dgql

    Todos os tipos na solução.

    Dos resultados da consulta, você pode gerar um gráfico que mostra as relações de herança entre esses tipos.

    Graph.dgql de herança

    A próxima coluna mostra os resultados como uma lista plana. Embora os links podem existir entre esses nós, Explorer de arquitetura não mostrá-los.

  5. Para gerar um gráfico, incluindo links, para todos os itens na coluna de resultados, siga estas etapas:

    1. Na coluna de resultados, pressione CTRL+a para selecionar todos os itens.

    2. Pressione e mantenha pressionado o CTRL chave para incluir somente itens na coluna atual no gráfico e, no Explorer de arquitetura a barra de título, clique em criar um novo documento do gráfico de todos os nós.

      Visual Studiocria um gráfico direcionado de documento (arquivo de .dgml) e o abre.

Consulte uma visão geral do código compilado

  1. Criar um gráfico em branco, ou abrir arquivo de .dgml de um gráfico existente.

  2. De fora Visual Studio, arraste o arquivo. dll ou. exe para o gráfico.

    ObservaçãoObservação

    Arrastando a partir de referências pasta na Solution Explorer não é suportado. Você pode arrastar módulos (assemblies) do Windows Explorer somente se você estiver executando o Windows Explorer e Visual Studio no mesmo controle de acesso de usuário (UAC) permissões nível. Por exemplo, se o UAC estiver habilitado e você estiver executando o Visual Studio como administrador, em seguida, Windows Explorer bloqueará a operação de arrastar. Para contornar este problema, desative o UAC ou usar as consultas predefinidas para explorar a sua solução.

Consulte as dependências específicas no código compilado

  1. Se Explorer de arquitetura não está aberto no arquitetura , aponte para Windowse, em seguida, clique em Explorer de arquitetura.

  2. Na primeira coluna, em Sistema de arquivos, clique em Selecionar arquivos.

  3. No Abrir caixa, navegue até os arquivos. dll ou. exe para selecionar e abri-los.

  4. Na próxima coluna, selecione os assemblies. Para selecionar tudo na coluna, pressione ctrl + A.

    A próxima coluna mostra os itens que estão relacionadas à sua seleção com base nos tipos padrão de itens e relacionamentos para essa coluna.

    ObservaçãoObservação

    Para selecionar outros tipos de itens e relacionamentos, expanda a coluna recolhida à direita da coluna com suas seleções. A coluna de ação aparece realçada quando você move o ponteiro sobre ele. Em Nó de navegação, selecione os tipos de itens que deseja. Em Saída navegação ou De entrada de navegação, selecione os tipos de relacionamentos que você deseja. Para obter mais informações, consulte Como: Localizar o código usando o Explorer de arquitetura.

  5. Escolha uma das seguintes opções:

    Para criar um gráfico de dependência dos seguintes itens

    Siga estas etapas.

    Conjuntos de Módulos (Assemblies)

    1. À direita da coluna que contém os assemblies, clique na coluna de ação recolhido para expandi-la.

      A coluna de ação aparece realçada quando você move o ponteiro sobre ele.

    2. Na coluna ação, em comandos, clique em Gráfico padrão.

    Classes e métodos

    1. Percorra as classes e métodos, a seleção de todos os itens que você deseja incluir no gráfico.

    2. Para criar um novo gráfico, na Explorer de arquitetura a barra de título, clique em criar um novo documento do gráfico de todos os nós.

      Visual Studiocria um gráfico direcionado de documento (arquivo de .dgml) e o abre.

      - ou -

      Para adicionar sua seleção para um gráfico existente ou para um gráfico em branco, siga estas etapas:

      1. Abra o arquivo de .dgml do gráfico existente, ou criar um gráfico em branco.

      2. Sob o Explorer de arquitetura a barra de título, clique em Adicionar todos os nós selecionados para o documento do gráfico visível no momento.

        - ou -

        Arraste os nós de Explorer de arquitetura para o gráfico.

Gerar documentos de gráfico para processamento em lotes

Para gerar documentos do gráfico (arquivos de .dgml) no modo em lote, use o GraphCmd.exe ferramenta de linha de comando. Por exemplo, você pode encontrar as dependências que foram alterados entre compilações executando a ferramenta após cada compilação.

Para localizar essa ferramenta, procure-o na seguinte pasta: 10.0\Common7\IDE do c:\Arquivos de Programas\Microsoft Visual Studio.

ObservaçãoObservação

GraphCmd.exe gera informações de dependência somente para assemblies ou arquivos de .dgml, o código de origem não Visual Studio arquivos de solução ou projeto.

A sintaxe para GraphCmd.exe é:

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

"DGQL_Statement" -output File_Name -path alias=path

A tabela a seguir descreve as opções para GraphCmd.exe:

-?

Exiba a Ajuda do GraphCmd.exe.

-all

Inclua todos os resultados intermediários de consulta, não apenas para o último conjunto de nós.

-exceptions

Relate as exceções de consulta como um arquivo de documento (.dgml) do gráfico.

-input Nome_do_arquivo

Processe o arquivo de .dgml especificado.

Isso é útil para um arquivo grande .dgml de pós-processamento e filtragem de forma que você pode visualizar a ele mais facilmente em Visual Studio.

-query Nome_do_arquivo

Execute o arquivo especificado de (DGQL ou .dgql) de linguagem de consulta de gráfico direcionado.

Para obter mais informações, consulte:

-exec "DGQL_Statement"

Execute a instrução de DGQL especificada.

Para obter mais informações, consulte Compreensão direcionado gráfico Query Language (DGQL).

-output Nome_do_arquivo

O arquivo especificado de .dgml de saída.

-path alias=caminho

Especifique um novo alias para usar a entrada e saída de documentos DGML.

Por exemplo:

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

Para obter mais informações, consulte Aliases para os caminhos de Commonly-Used.

Comentários

GraphCmd.exe é executado fora Visual Studio, portanto, o suporte para ações em consultas de .dgql é limitado.

Você pode especificar várias vezes para as seguintes opções: -input, -query, -exec, and -path.

Aliases para caminhos usados comumente

Aliases para caminhos usados comumente reduzem o tamanho do arquivo .dgml e o tempo necessário para carregar ou salvar o arquivo. Para criar um alias, adicione um <Paths></Paths> seção no final do arquivo .dgml. Nesta seção, adicione um <Path/> elemento para definir um alias para o caminho:

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

Para fazer referência o alias de um elemento no arquivo .dgml, coloque o Id da <Path/> elemento com um sinal de cifrão ($) e parênteses (()):

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

Para obter mais informações sobre como editar arquivos de .dgml, consulte Como: Editar e personalizar documentos do gráfico.

Noções básicas sobre direcionado a linguagem de consulta do gráfico (DGQL)

DGQL é uma linguagem de consulta simples que você pode usar para criar DGML. Uma instrução DGQL segue um padrão alternado de seleção de nó e as ações que cada seleção de nó cria a entrada para a próxima ação cuja saída torna-se entrada para a próxima seleção de nó e assim por diante.

O formato de uma instrução DGQL é:

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

A tabela a seguir descreve a sintaxe DGQL usada para selecionar nós:

*

Selecione todos os nós.

+ "text"

Selecione todos os nós que contêm "texto".

+ Id.Equals("text")

Selecione todos os nós cujos Id é igual a "texto".

+ Background.Contains("text")

Selecione todos os nós cujos Background atributo tem um valor que contém a seqüência "texto".

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

Selecione todos os nós que corresponde a "Texto1" or "text2".

+ MyProperty="True"

Selecione todos os nós que têm uma propriedade chamada MyProperty cujo valor é "True".

- Label.Contains("text")

Selecione todos os nós exceto aqueles que têm um Label que o atributo Contains a seqüência de caracteres "texto".

+ Category.Is("MyCategory")

Selecione todos os nós que têm uma categoria denominada MyCategory ou que herda de MyCategory.

Ações são fornecidas por provedores de dados DGML registrados no Visual Studio, mas você pode descobrir essas ações, salvando uma consulta que foi criada no Explorer de arquitetura. Para obter mais informações sobre como usar a arquitetura do Explorer, consulte Como: Localizar o código usando o Explorer de arquitetura.

A tabela a seguir descreve os exemplos de ações de direta que pode ser executadas em nós selecionados:

Ação de exemplo

Descrição

Microsoft.Contains

Retorne todos os nós são contidos por nós de entrada. Você pode substituir Contains com uma categoria de link diferente.

Microsoft.Open

Abra o código-fonte para os nós de entrada.

ObservaçãoObservação
Funciona somente em Visual Studio.

Microsoft.AllOutBoundLinks

Retorne todos os nós que são o alvo de um link de saída de nós de entrada.

Microsoft.AllInboundLinks

Retorne todos os nós de extremidade de origem de um link para os nós de entrada.

Microsoft.Core.CreateGroupsByProperties

Chamar o GroupByProperties ação.

Microsoft.AllNodes

Retorne todos os nós no gráfico inteiro até o momento.

Ações orientadas por dados selecionam itens com base somente nos dados em nós de entrada e links. Ao fazer a correspondência de categorias usando ações orientadas a dados, herdadas de categorias são incluídas. A tabela a seguir descreve os exemplos de ações orientados por dados:

Tipo

Descrição

Node:Both:Category

Retornar todos os nós que tenham a categoria Category e estão conectados com os nós de entrada por um link que aponta em qualquer direção.

Link:Both:Category

Retornar todos os nós conectados com os nós de entrada por um link que aponta na direção de e possui a categoria Category.

Link:Backward:Category

Retornar todos os nós que apontam para os nós de entrada com um link de categoria de Category.

Link:Forward:Category

Retornar todos os nós que apontam de nós de entrada com um link de categoria de Category.

Dicas

  • Geralmente, há um "padrão" ação para um determinado conjunto de nós de entrada, que é selecionado automaticamente pelo Explorer de arquitetura. Para obter o mesmo comportamento, use uma ação vazia: //

  • Espaço em branco não é significativo em DGQL, portanto, você pode formatar a sua consulta para caber em uma linha, se necessário. Isso é útil quando você usar o –exec opção com GraphCmd.

  • Quando estiver depurando DGQL, use a ação "Execute Expanded" no Explorer de arquitetura para ajudá-lo de ver a cada etapa da consulta e localizar a etapa que não está produzindo os resultados esperados.

Exemplo

A instrução a seguir DGQL executa uma consulta, conforme descrito nas etapas a seguir:

+ Id.Equals("Microsoft.Solution.ClassView") / "Microsoft.Solution.ClassView" / * / "Node:Both:CodeSchema_Class" / + CodeSchemaProperty_IsPublic.Equals("True")
  1. Comece selecionando o o modo de exibição de classe nó na primeira coluna do Explorer de arquitetura.

  2. Executa a ação "Microsoft.Solution.ClassView", retornando todos os namespaces na solução. 

  3. Use * para selecionar todos os namespaces.

  4. Selecione todos os nós que tenham a categoria CodeSchema_Class e estão relacionados a esses espaços para nome por um link em qualquer direção. Geralmente, esses serão os links de confinamento.

  5. Filtrar as classes resultantes a apenas aqueles que possuem a propriedade CodeSchemaProperty_IsPublic="True".

Tecnicamente, a ação "Microsoft.Solution.ClassView" é desnecessário, porque ele é o "padrão" ação para o o modo de exibição de classe nó. Portanto, você pode substituir essa ação com // para simplificar a consulta e formatá-lo em uma única linha da seguinte maneira:

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

Consulte também

Tarefas

Como: Salvar, compartilhar e exportar documentos do gráfico

Conceitos

Visualizando o código existente

Outros recursos

Como: Explore o código com gráficos de dependência

Como: Procurar e navegar por documentos do gráfico

Como: Editar e personalizar documentos do gráfico