Procedura: generare grafici di dipendenze per il codice .NET

Per esplorare l'organizzazione e le relazioni nel codice .NET, utilizzare Visual Studio Ultimate per generare grafici dipendenze. Utilizzare questi grafici per visualizzare, esplorare e analizzare le dipendenze nel codice. Un grafico rappresenta elementi del codice e le relative relazioni come set di nodi connessi tramite collegamenti o bordi.

Nota

Se si dispone di una soluzione, la generazione di un grafico dipendenze potrebbe provocare un'eccezione di memoria insufficiente. Se si verifica tale situazione, ridurre l'ambito della soluzione. È anche possibile utilizzare Esplora architettura per selezionare i progetti e le dipendenze che si desidera visualizzare, quindi generare il grafico.

Per generare grafici dipendenze per il codice C e C++ e per i progetti Web, scaricare e installare Feature Pack di visualizzazione e modellazione di Microsoft Visual Studio 2010.

Per ulteriori informazioni, vedere:

Scegliere un grafico di dipendenze da generare

Visual Studio Ultimate consente di generare documenti grafici rapidamente per esplorare le dipendenze nel codice. Per generare documenti grafici tramite uno strumento da riga di comando, vedere Generare documenti grafici per l'elaborazione batch.

Per

Generare un grafico in cui siano visualizzate relazioni

Visualizzare una panoramica del codice sorgente

Tra tutti gli assembly, gli spazi dei nomi o le classi in una soluzione di Visual Studio.

Nel grafico vengono visualizzate dipendenze aggregate per il primo livello di nodi selezionati.

Visualizzare dipendenze specifiche nel codice sorgente

Tra aree selezionate del codice sorgente in una soluzione di Visual Studio.

Utilizzare Esplora architettura per esplorare il codice in modo gerarchico e selezionare tipi specifici di strutture e relazioni.

Visualizzare una panoramica del codice compilato

In uno o più file di assembly .NET (con estensione dll) o file eseguibili (con estensione exe)

Visualizzare dipendenze specifiche nel codice compilato

Tra aree selezionate in file di assembly .NET (con estensione dll) o file eseguibili (con estensione exe).

Utilizzare Esplora architettura per esplorare e selezionare tipi specifici di strutture e relazioni.

Dopo avere generato il grafico, è possibile utilizzarlo per esplorare in modi diversi il codice. Per ulteriori informazioni, vedere Procedura: esplorare il codice con grafici di dipendenze.

Visualizzare una panoramica del codice sorgente in una soluzione di Visual Studio

  1. Aprire la soluzione.

  2. Scegliere Genera grafico dipendenze dal menu Architettura, quindi effettuare uno dei passaggi seguenti:

    Fare clic su

    Per generare un grafico che mostra

    Per assembly

    Dipendenze aggregate tra tutti gli assembly prodotti dalla soluzione e tutte le eventuali dipendenze esterne da cui dipendono.

    Per visualizzare gli spazi dei nomi, le classi e i metodi in un assembly, espandere l'assembly nel grafico. Gli assembly esterni mostrano solo gli elementi in uso.

    Per spazio dei nomi

    Dipendenze aggregate tra tutti gli spazi dei nomi presenti nella soluzione e tutti gli eventuali spazi dei nomi esterni da cui dipende il codice.

    Per visualizzare le classi e i metodi in uno spazio dei nomi, espandere lo spazio dei nomi nel grafico. Gli spazi dei nomi esterni mostrano solo gli elementi in uso.

    Per classe

    Dipendenze aggregate tra tutte le classi nella soluzione. Non verranno visualizzate informazioni sulle classi esterne utilizzate dal codice.

    -oppure-

    Per visualizzare le dipendenze tra più tipi di strutture, fare clic su Personalizza.

    1. Nella finestra di dialogo Genera grafico dipendenze fare clic su almeno una delle seguenti caselle: Assembly, Spazi dei nomi, Tipi o Metodi.

    2. Utilizzare la tabella seguente per filtrare il grafico:

      Per

      Eseguire questi passaggi

      Visualizzare riferimenti alle dipendenze esterne.

      Ciò si rivela utile per esplorare la modalità di compilazione degli assembly interni in base agli assembly esterni.

      Selezionare Esterni.

      Visualizzare solo i tipi e i metodi con i livelli di accesso specifici.

      Ad esempio, potrebbe essere necessario semplificare il grafico selezionando solo tipi pubblici.

      Espandere il riquadro Filtro di accesso, quindi selezionare i livelli desiderati.

      NotaNota
      È necessario selezionare almeno un tipo di livello di accesso.Per ridurre il numero di dipendenze nel grafico, selezionare solo i livelli di accesso desiderati per i metodi.

      Visualizzare dipendenze di alto livello mostrando relazioni di contenimento come gruppi annidati e dipendenze come collegamenti aggregati.

      NotaNota
      Per i metodi le dipendenze saranno visualizzate come collegamenti singoli, non come collegamenti aggregati, perché i metodi sono i nodi foglia di livello inferiore.

      Selezionare la casella Mostra contenuto come gruppo.

      Visualizzare dipendenze di basso livello mostrando relazioni di contenimento come nodi collegati e dipendenze come collegamenti singoli.

      Deselezionare la casella Mostra contenuto come gruppo.

    3. Al termine, fare clic su OK.

      Tramite Visual Studio viene creato un documento grafico diretto (file con estensione dgml), che viene aperto.

    Lo spessore del collegamento per una dipendenza aggregata indica approssimativamente quante dipendenze singole sono rappresentate dalla dipendenza aggregata. Per visualizzare il tipo di dipendenze rappresentate dal collegamento, spostare il puntatore del mouse sul collegamento finché non verrà visualizzata una descrizione comando.

    Nota

    Nei grafici di dipendenze generati dal menu Architettura non vengono visualizzate le chiamate ai metodi virtuali fino al tipo più derivato. Vengono invece visualizzate le dipendenze nei tipi che dichiarano tali membri virtuali. È tuttavia possibile utilizzare Visualizzazione classi in Esplora architettura per trovare tali chiamate. È quindi possibile trascinarle da Esplora architettura a un grafico esistente oppure è possibile generare un nuovo grafico dalla barra degli strumenti di Esplora architettura.

Visualizzare dipendenze specifiche nel codice sorgente in una soluzione di Visual Studio

Utilizzare Esplora architettura per trovare il codice e le relazioni che si desidera visualizzare. È inoltre possibile utilizzare query predefinite per generare un grafico.

  1. Aprire la soluzione.

  2. Se Esplora architettura non è aperto, scegliere Finestre dal menu Architettura, quindi fare clic su Esplora architettura.

  3. Nella prima colonna di Esplora architettura fare clic su una delle visualizzazioni seguenti in Visual Studio:

    • Visualizzazione classi per esplorare la gerarchia logica del codice.

      Utilizzarla per esplorare spazi dei nomi, tipi, metodi e così via.

    • Visualizzazione soluzione per esplorare la gerarchia fisica del codice.

      Utilizzarla per esplorare progetti, file di origine e così via.

  4. Nella colonna successiva selezionare gli elementi che si desidera esplorare. Per selezionare tutto il contenuto della colonna, premere CTRL+A.

    La colonna successiva mostra elementi correlati alla selezione in base alle relazioni e ai tipi di elementi predefiniti per tale colonna.

    Nota

    Per selezionare gli altri tipi di elementi e relazioni, espandere la colonna compressa a destra della colonna contenente le selezioni. In Navigazione nodi selezionare i tipi di elementi desiderati. In Navigazione esterna o Navigazione interna selezionare i tipi di relazioni desiderati. Per ulteriori informazioni, vedere Procedura: trovare codice tramite Esplora architettura.

  5. Ripetere il passaggio 4 finché non vengono selezionati tutti gli elementi desiderati.

    Nota

    Per includere dipendenze di tipo Chiamate nel grafico, individuare e selezionare tutti i metodi chiamati dalle classi selezionate.

  6. Per creare un nuovo grafico dalla selezione, sotto la barra del titolo di Esplora architettura fare clic su Crea un nuovo documento grafico da tutti i nodi selezionati.

    Tramite Visual Studio viene creato un documento grafico diretto (file con estensione dgml), che viene aperto.

    -oppure-

    Per aggiungere la selezione a un grafico esistente o a un grafico vuoto, attenersi alla seguente procedura:

    1. Aprire il file con estensione dgml di un grafico esistente o creare un grafico vuoto.

    2. Sotto la barra del titolo di Esplora architettura, fare clic su Aggiunge tutti i nodi selezionati al documento grafico attualmente visibile.

      - oppure -

      Trascinare i nodi da Esplora architettura nel grafico.

Creare un grafico vuoto

  1. Per aprire un grafico vuoto, scegliere Nuovo dal menu File, quindi fare clic su File.

    -oppure-

    Per aggiungere un grafico vuoto alla cartella Elementi di soluzione, in Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo della soluzione di primo livello, quindi scegliere Aggiungi nuovo elemento.

  2. In Modelli installati fare clic su Generale.

  3. Nel riquadro destro fare clic su Documento grafico diretto, assegnare un nome al grafico, quindi fare clic su Aggiungi.

Per ulteriori informazioni sulle diverse modalità con cui è possibile interagire con il grafico, fare clic sul collegamento alla Guida visualizzato nel grafico vuoto.

Esplorare il codice sorgente utilizzando query predefinite

  1. Aprire la soluzione.

  2. Se Esplora architettura non è aperto, scegliere Finestre dal menu Architettura, quindi fare clic su Esplora architettura.

  3. Nella prima colonna di Esplora architettura fare clic su In cartelle in Query DGQL salvate.

  4. Nella colonna successiva fare clic su una delle query seguenti, a seconda del tipo di grafico che si desidera creare:

    Per generare un grafico che mostra

    Fare clic su

    Tutti gli assembly a cui viene fatto riferimento dalla soluzione.

    Dai risultati della query è possibile generare un grafico che mostri le dipendenze tra questi assembly.

    All Assembly References.dgql

    Un elenco semplice di tutti gli assembly di output nella soluzione senza collegamenti di dipendenza.

    All Output Assemblies.dgql

    Per generare un grafico di dipendenze standard per gli assembly selezionati, attenersi alla seguente procedura:

    1. Nella colonna successiva selezionare gli assembly desiderati.

    2. Sul lato destro della colonna corrente fare clic sulla colonna dell'azione compressa per espanderla.

      NotaNota
      La colonna dell'azione viene visualizzata evidenziata quando si sposta il puntatore su di essa.
    3. Nella colonna dell'azione fare clic su Grafico standard in Comandi.

    Tutti i progetti nella soluzione.

    Dai risultati della query è possibile generare un grafico che mostri i riferimenti tra questi progetti.

    All Project References.dgql

    Un elenco semplice dei progetti nella soluzione.

    Se nella soluzione sono incluse cartelle della soluzione, questo elenco sarà diverso da quello mostrato quando si fa clic su Visualizzazione soluzione in Esplora architettura.

    All Projects.dgql

    Tutti i tipi nella soluzione.

    Dai risultati della query è possibile generare un grafico che mostri le relazioni di ereditarietà tra questi tipi.

    Inheritance Graph.dgql

    La colonna successiva mostra i risultati come elenco semplice. Anche se tra questi nodi potrebbero esistere collegamenti, in Esplora architettura non saranno visualizzati.

  5. Per generare un grafico, inclusi i collegamenti, per tutti gli elementi nella colonna dei risultati, attenersi alla seguente procedura:

    1. Nella colonna dei risultati premere CTRL+A per selezionare tutti gli elementi.

    2. Premere e tenere premuto CTRL per includere solo elementi nella colonna corrente del grafico, quindi sotto la barra del titolo di Esplora architettura fare clic su Crea un nuovo documento grafico da tutti i nodi selezionati.

      Tramite Visual Studio viene creato un documento grafico diretto (file con estensione dgml), che viene aperto.

Visualizzare una panoramica del codice compilato

  1. Creare un grafico vuoto o aprire il file con estensione dgml di un grafico esistente.

  2. Dall'esterno di Visual Studio trascinare il file con estensione dll o exe nel grafico.

    Nota

    Il trascinamento dalla cartella Riferimenti in Esplora soluzioni non è supportato. È possibile trascinare assembly da Esplora risorse solo se Esplora risorse e Visual Studio vengono eseguiti allo stesso livello di controllo di accesso utente. Ad esempio, se il controllo di accesso utente è attivato e si esegue Visual Studio come amministratore, l'operazione di trascinamento verrà bloccata da Esplora risorse. Per risolvere questo problema, disattivare il controllo di accesso utente o utilizzare le query predefinite per esplorare la soluzione.

Visualizzare dipendenze specifiche nel codice compilato

  1. Se Esplora architettura non è aperto, scegliere Finestre dal menu Architettura, quindi fare clic su Esplora architettura.

  2. Nella prima colonna fare clic su Seleziona file in File system.

  3. Nella finestra di dialogo Apri passare ai file con estensione dll o ai file con estensione exe, selezionarli e quindi aprirli.

  4. Nella colonna successiva selezionare gli assembly. Per selezionare tutto il contenuto della colonna, premere CTRL+A.

    La colonna successiva mostra elementi correlati alla selezione in base alle relazioni e ai tipi di elementi predefiniti per tale colonna.

    Nota

    Per selezionare gli altri tipi di elementi e relazioni, espandere la colonna compressa a destra della colonna contenente le selezioni. La colonna dell'azione viene visualizzata evidenziata quando si sposta il puntatore su di essa. In Navigazione nodi selezionare i tipi di elementi desiderati. In Navigazione esterna o Navigazione interna selezionare i tipi di relazioni desiderati. Per ulteriori informazioni, vedere Procedura: trovare codice tramite Esplora architettura.

  5. Effettuare una delle seguenti operazioni:

    Per creare un grafico di dipendenze dagli elementi seguenti

    Si seguano le seguenti istruzioni

    Assembly

    1. A destra della colonna che contiene gli assembly fare clic sulla colonna dell'azione compressa per espanderla.

      La colonna dell'azione viene visualizzata evidenziata quando si sposta il puntatore su di essa.

    2. Nella colonna dell'azione fare clic su Grafico standard in Comandi.

    Classi e metodi

    1. Esplorare le classi e i metodi selezionando tutti gli elementi che si desidera includere nel grafico.

    2. Per creare un nuovo grafico, sotto la barra del titolo di Esplora architettura fare clic su Crea un nuovo documento grafico da tutti i nodi selezionati.

      Tramite Visual Studio viene creato un documento grafico diretto (file con estensione dgml), che viene aperto.

      -oppure-

      Per aggiungere la selezione a un grafico esistente o a un grafico vuoto, attenersi alla seguente procedura:

      1. Aprire il file con estensione dgml di un grafico esistente o creare un grafico vuoto.

      2. Sotto la barra del titolo di Esplora architettura, fare clic su Aggiunge tutti i nodi selezionati al documento grafico attualmente visibile.

        -oppure-

        Trascinare i nodi da Esplora architettura nel grafico.

Generare documenti grafici per l'elaborazione batch

Per generare documenti grafici (file con estensione dgml) in modalità batch, utilizzare lo strumento da riga di comando GraphCmd.exe. È ad esempio possibile trovare le dipendenze che sono cambiate tra le compilazioni eseguendo lo strumento dopo ogni compilazione.

Questo strumento è disponibile nella cartella C:\Programmi\Microsoft Visual Studio 10.0\Common7\IDE.

Nota

Tramite GraphCmd.exe vengono generate informazioni sulle dipendenze solo per assembly o file con estensione dgml e non per codice sorgente in file di soluzione o di progetto di Visual Studio.

La sintassi di GraphCmd.exe è la seguente:

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

"DGQL_Statement" -output File_Name -path alias=path

Nella tabella seguente vengono descritte le opzioni di GraphCmd.exe:

-?

Consente di visualizzare la guida per GraphCmd.exe.

-all

Consente di includere tutti i risultati di query intermedi, non solo per l'ultimo set di nodi.

-exceptions

Consente di segnalare le eccezioni di query come file di documento grafico, con estensione dgml.

-input Nome file

Consente di elaborare il file con estensione dgml specificato.

Si tratta di un'opzione utile per la post-elaborazione in un file con estensione dgml di grandi dimensioni e per l'applicazione di un filtro a tale file in modo da semplificarne la visualizzazione in Visual Studio.

-query Nome file

Consente di eseguire il file con estensione dgql (DGQL, Directed Graph Query Language).

Per ulteriori informazioni, vedere:

-exec "Istruzione_DGQL"

Consente di eseguire l'istruzione DGQL specificata.

Per ulteriori informazioni, vedere Informazioni su DGQL (Directed Graph Query Language).

-output Nome_file

Consente di restituire come output il file con estensione dgml specificato.

-path alias=percorso

Consente di specificare un nuovo alias da utilizzare nell'input e nell'output dei documenti DGML.

Ad esempio:

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

Per ulteriori informazioni, vedere Alias per i percorsi di utilizzo comune.

Osservazioni

GraphCmd.exe viene eseguito al di fuori di Visual Studio, pertanto il supporto per le azioni nelle query DGQL è limitato.

È possibile specificare le opzioni seguenti più volte: -input, -query, -exec e -path.

Alias per i percorsi di utilizzo comune

Gli alias per i percorsi di utilizzo comune consentono di ridurre le dimensioni del file con estensione dgml e il tempo necessario per caricare o salvare il file. Per creare un alias, aggiungere una sezione <Paths></Paths> alla fine del file con estensione dgml. In questa sezione aggiungere un elemento <Path/> per definire un alias per il percorso:

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

Per fare riferimento all'alias da un elemento nel file con estensione dgml, racchiudere il valore Id dell'elemento <Path/> con un segno di dollaro ($) e parentesi (()):

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

Per ulteriori informazioni sulla modifica di file con estensione dgml, vedere Procedura: modificare e personalizzare documenti grafico.

Informazioni su DGQL (Directed Graph Query Language)

DGQL è un linguaggio di query leggero che è possibile utilizzare per compilare DGML. Un'istruzione DGQL segue un modello alternato di selezione del nodo e azioni, in modo tale che ogni selezione del nodo crea un input per l'azione successiva, il cui output diventa l'input per la selezione del nodo successiva e così via.

Il formato di un'istruzione DGQL è il seguente:

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

Nella tabella seguente viene descritta la sintassi DGQL utilizzata per la selezione dei nodi:

*

Consente di selezionare tutti i nodi.

+ "text"

Consente di selezionare tutti i nodi che contengono "text".

+ Id.Equals("text")

Consente di selezionare tutti i nodi il cui Id è uguale a "text".

+ Background.Contains("text")

Consente di selezionare tutti i nodi il cui attributo Background ha un valore che contiene la stringa "text".

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

Consente di selezionare tutti i nodi che corrispondono a "text1" o "text2".

+ MyProperty="True"

Consente di selezionare tutti i nodi che dispongono di una proprietà denominata MyProperty il cui valore è "True".

- Label.Contains("text")

Consente di selezionare tutti i nodi ad eccezione di quelli che hanno un attributo Label che contiene (Contains) la stringa "text".

+ Category.Is("MyCategory")

Consente di selezionare tutti i nodi che dispongono di una categoria denominata MyCategory o che eredita da MyCategory.

Le azioni vengono fornite da provider di dati DGML registrati in Visual Studio, ma è possibile individuare queste azioni salvando una query creata in Esplora architettura. Per ulteriori informazioni sull'utilizzo di Esplora architettura, vedere Procedura: trovare codice tramite Esplora architettura.

Nella tabella seguente vengono descritti esempi di azioni dirette che è possibile eseguire nei nodi selezionati:

Azione di esempio

Descrizione

Microsoft.Contains

Consente di restituire tutti i nodi inclusi nei nodi di input. È possibile sostituire Contains con una categoria di collegamento diversa.

Microsoft.Open

Consente di aprire il codice sorgente per i nodi di input.

NotaNota
Funziona solo in Visual Studio.

Microsoft.AllOutBoundLinks

Consente di restituire tutti i nodi che rappresentano la destinazione di un collegamento in uscita dai nodi di input.

Microsoft.AllInboundLinks

Consente di restituire tutti i nodi che rappresentano l'origine di un collegamento ai nodi di input.

Microsoft.Core.CreateGroupsByProperties

Consente di richiamare l'azione GroupByProperties.

Microsoft.AllNodes

Consente di restituire tutti i nodi nell'intero grafico fino al punto corrente.

Le azioni basate sui dati consentono di selezionare gli elementi solo in base ai dati nei nodi di input e nei collegamenti. Quando si associano le categorie utilizzando azioni basate sui dati, vengono incluse le categorie ereditate. Nella tabella seguente vengono descritti esempi di azioni basate sui dati:

Tipo

Descrizione

Node:Both:Category

Consente di restituire tutti i nodi che dispongono della categoria Category e che sono connessi con i nodi di input da un collegamento che punta in una delle direzioni.

Link:Both:Category

Consente di restituire tutti i nodi connessi con i nodi di input da un collegamento che punta in una delle direzioni e che dispone della categoria Category.

Link:Backward:Category

Consente di restituire tutti i nodi che puntano ai nodi di input con un collegamento che dispone della categoria Category.

Link:Forward:Category

Consente di restituire tutti i nodi che puntano dai nodi di input con un collegamento che dispone della categoria Category.

Suggerimenti

  • In genere, è prevista un'azione "predefinita" per un set specifico di nodi di input, selezionata automaticamente da Esplora architettura. Per ottenere lo stesso comportamento, utilizzare un'azione vuota: //

  • Lo spazio vuoto non è significativo in DGQL, pertanto è possibile formattare la query in modo che occupi un'unica riga, se necessario. Questa operazione è utile quando si utilizza l'opzione –exec con GraphCmd.

  • Quando si esegue il debug di DGQL, utilizzare l'azione "Execute Expanded" in Esplora architettura per visualizzare ogni passaggio della query e individuare quello che non produce i risultati previsti.

Esempio

L'istruzione DGQL seguente consente di eseguire una query come descritto nei passaggi seguenti:

+ Id.Equals("Microsoft.Solution.ClassView") / "Microsoft.Solution.ClassView" / * / "Node:Both:CodeSchema_Class" / + CodeSchemaProperty_IsPublic.Equals("True")
  1. Iniziare selezionando il nodo Visualizzazione classi nella prima colonna di Esplora architettura.

  2. Eseguire l'azione "Microsoft.Solution.ClassView", restituendo tutti gli spazi dei nomi nella soluzione. 

  3. Utilizzare * per selezionare tutti gli spazi dei nomi.

  4. Selezionare tutti i nodi che dispongono di una categoria denominata CodeSchema_Class e sono correlati a tali spazi dei nomi da un collegamento in una delle due direzioni. Si tratta in genere di collegamenti di contenimento.

  5. Filtrare le classi risultanti per individuare solo quelle che dispongono della proprietà CodeSchemaProperty_IsPublic="True".

Tecnicamente, l'azione "Microsoft.Solution.ClassView" non è necessaria in quanto si tratta dell'azione "predefinita" per il nodo Visualizzazione classi. È pertanto possibile sostituire tale azione con // per semplificare la query e formattarla su una singola riga come illustrato di seguito:

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

Vedere anche

Attività

Procedura: salvare, condividere ed esportare documenti grafico

Concetti

Visualizzazione del codice esistente

Altre risorse

Procedura: esplorare il codice con grafici di dipendenze

Procedura: esplorare documenti grafico e spostarsi tra di essi

Procedura: modificare e personalizzare documenti grafico