Eseguire il mapping delle dipendenze con le mappe del codice
In questo articolo si apprenderà come visualizzare le dipendenze nel codice con le mappe del codice.
Che cosa sono le mappe codici?
In Visual Studio le mappe del codice consentono di visualizzare più rapidamente il modo in cui il codice del programma si integra senza leggere i file e le righe di codice. Con queste mappe è possibile visualizzare l'organizzazione e le relazioni nel codice, inclusa la struttura e le relative dipendenze, come aggiornarla e stimare il costo delle modifiche proposte.
È possibile eseguire il mapping delle dipendenze per il codice nei seguenti linguaggi:
Visual C# o Visual Basic in una soluzione o in assembly (.dll o .exe)
Codice C o C++ nativo o gestito nei progetti Visual C++, nei file di intestazione (con estensione h o
#include
) o nei file binariProgetti X++ e assembly creati da moduli .NET per Microsoft Dynamics AX
Nota
Per i progetti diversi da C# o Visual Basic, sono disponibili meno opzioni per l'avvio di una mappa del codice o l'aggiunta di elementi a una mappa codice esistente. Ad esempio, non è possibile fare clic con il pulsante destro del mouse su un oggetto nell'editor di testo di un progetto C++ e aggiungerlo a una mappa codice. È tuttavia possibile trascinare e rilasciare singoli elementi di codice o file da Esplora soluzioni, Visualizzazione classi e Visualizzatore oggetti.
Prerequisiti
Per creare una mappa codice in Visual Studio, installare prima di tutto i componenti Mappa codice e Convalida delle dipendenze attive
Per creare e modificare mappe codice, è necessario Visual Studio Enterprise Edition. Tuttavia, nelle edizioni Community e Professional di Visual Studio è possibile aprire diagrammi generati nell'edizione Enterprise, ma non modificarli.
Nota
Prima di condividere le mappe create in Visual Studio Enterprise con altri utenti che usano Visual Studio Professional, assicurarsi che tutti gli elementi sulla mappa (ad esempio elementi nascosti, gruppi espansi e collegamenti tra gruppi) siano visibili.
Aggiungere una mappa codice
È possibile creare una mappa codice vuota e trascinare gli elementi in esso, inclusi i riferimenti agli assembly, i file e le cartelle oppure è possibile generare una mappa del codice per tutta o parte della soluzione.
Per aggiungere una mappa codici vuota:
In Esplora soluzioniaprire il menu di scelta rapida per il nodo della soluzione di primo livello. Scegliere Aggiungi>nuovo elemento.
Nella finestra di dialogo Aggiungi nuovo elemento, in Installato, scegliere la categoria Generale.
Scegliere il modello Documento grafico diretto (.dgml) e quindi selezionare Aggiungi.
Suggerimento
Questo modello potrebbe non essere visualizzato alfabeticamente, quindi scorrere verso il basso fino alla fine dell'elenco di modelli se non viene visualizzato.
Nella cartella Elementi soluzione della soluzione viene visualizzata una mappa vuota.
Analogamente, è possibile creare un nuovo file di mapping del codice senza aggiungerlo alla soluzione selezionando Architettura>Nuova mappa codice o File>nuovo>file.
Altre informazioni:
- Condividere le mappe del codice
- Creare mappe codice per C++
- Migliorare le prestazioni della mappa del codice
Generare una mappa del codice per la soluzione
Per visualizzare tutte le dipendenze nella soluzione:
Sulla barra dei menu scegliere Architettura>Genera mappa codice per soluzione. Se il codice non è stato modificato dopo l'ultima compilazione, è possibile selezionare Invece Architecture>Generate Code Map for Solution Without Building (Genera mappa codice per soluzione senza compilazione).
Viene generata una mappa che mostra gli assembly di primo livello e i collegamenti aggregati tra di essi. A una maggiore ampiezza del collegamento aggregato corrisponde un maggior numero di dipendenze che rappresenta.
Usare il pulsante Legenda sulla barra degli strumenti del codice per visualizzare o nascondere l'elenco di icone del tipo di progetto (ad esempio Test, Web e Progetto per telefono), gli elementi di codice (ad esempio Classi, Metodi e Proprietà) e i tipi di relazione (ad esempio Eredita da, Implementa e Chiamate).
Questa soluzione di esempio contiene cartelle della soluzione (Test e Componenti), progetti di test, progetti Web e assembly. Per impostazione predefinita, tutte le relazioni del contenitore vengono visualizzate come gruppiche è possibile espandere e comprimere. Il gruppo Esterni contiene qualsiasi elemento esterno alla soluzione, incluse le dipendenze della piattaforma. Gli assembly esterni mostrano solo gli elementi usati. Per impostazione predefinita, i tipi di base del sistema sono nascosti sulla mappa per evitare confusione.
Per eseguire il drill-down nella mappa, espandere i gruppi che rappresentano progetti e assembly. Per espandere tutti gli elementi premere CTRL+A per selezionare tutti i nodi e quindi scegliere Gruppo, Espandi dal menu di scelta rapida.
Tuttavia, questa operazione potrebbe non essere utile per una soluzione di grandi dimensioni. Infatti, per soluzioni complesse, i limiti di memoria potrebbero impedire di espandere tutti i gruppi. In alternativa, per visualizzare gli elementi all'interno di un singolo nodo, espanderlo. Spostare il puntatore del mouse sopra il nodo, quindi scegliere il pulsante con la freccia di espansione (freccia giù) quando viene visualizzato.
In alternativa, usare la tastiera selezionando l'elemento e premendo il tasto più (+). Per esplorare i livelli più profondi di codice, effettuare la stessa operazione per gli spazi dei nomi, i tipi e i membri.
Suggerimento
Per altre informazioni sull'uso delle mappe del codice usando il mouse, la tastiera e il tocco, vedere Esplorare e ridisporre le mappe del codice.
Per semplificare la mappa e concentrarsi sulle singole parti, scegliere Filtri nella barra degli strumenti della mappa codice e selezionare solo i tipi di nodi e di collegamenti desiderati. Ad esempio, è possibile nascondere tutti i contenitori di Cartella soluzione e Assembly.
È anche possibile semplificare la mappa nascondendo o rimuovendo i singoli gruppi ed elementi dalla mappa, senza modificare il codice della soluzione sottostante.
Per visualizzare le relazioni tra elementi, selezionarle nella mappa. I colori dei collegamenti indicano i tipi di relazione, come mostrato nel riquadro Legenda .
In questo esempio, i collegamenti viola sono chiamate, i collegamenti punteggiati sono riferimenti e i collegamenti azzurro rappresentano l'accesso al campo. I collegamenti verdi possono essere ereditati o possono essere collegamenti aggregati che indicano più di un tipo di relazione (o categoria).
Suggerimento
Se viene visualizzato un collegamento verde, non necessariamente esiste solo una relazione di ereditarietà. Potrebbero essere presenti anche chiamate al metodo, nascoste dalla relazione di ereditarietà. Per visualizzare tipi specifici di collegamenti, usare le caselle di controllo nel riquadro Filtri per nascondere i tipi a cui non si è interessati.
Per altre informazioni su un elemento o un collegamento, spostare il puntatore su di esso finché non viene visualizzata una descrizione comando. In questo modo vengono mostrati i dettagli di un elemento di codice o delle categorie rappresentate da un collegamento.
Per esaminare gli elementi e le dipendenze rappresentate da un collegamento di aggregazione, prima selezionare il collegamento, quindi aprire il relativo menu di scelta rapida. Scegliere Mostra collegamenti partecipanti (o Mostra collegamenti partecipanti sulla nuova mappa codice). I gruppi vengono espansi a entrambe le estremità del collegamento e vengono mostrati solo gli elementi e le dipendenze che partecipano al collegamento.
Per concentrarsi su parti specifiche della mappa, è possibile continuare a rimuovere gli elementi a cui non si è interessati. Ad esempio, per analizzare la visualizzazione delle classi e dei membri, è sufficiente filtrare tutti i nodi dello spazio dei nomi nel riquadro Filtri .
Un altro modo per concentrarsi sulla mappa di soluzione complessa consiste nel generare una nuova mappa contenente gli elementi selezionati da una mappa esistente. Tenere premuto CTRL mentre si selezionano gli elementi su cui si desidera concentrarsi, aprire il menu di scelta rapida e scegliere Nuovo grafico dalla selezione.
Il contesto contenitore viene trasferito alla nuova mappa. Nascondere le cartelle della soluzione e tutti gli altri contenitori che non si desidera visualizzare usando il riquadro Filtri .
Espandere i gruppi e selezionare gli elementi della mappa per visualizzare le relazioni.
Vedere anche:
- Cercare e ridisporre le mappe del codice
- Personalizzare le mappe codice modificando i file DGML
- Individuare potenziali problemi nel codice eseguendo un analizzatore
Visualizzare le dipendenze
Si supponga di avere una revisione del codice da eseguire in alcuni file con modifiche in sospeso. Per visualizzare le dipendenze in queste modifiche, è possibile creare una mappa codice da tali file.
In Esplora soluzioni selezionare i progetti, i riferimenti agli assembly, le cartelle, i file, i tipi o i membri di cui si vuole eseguire il mapping.
Sulla barra degli strumenti Esplora soluzioni scegliere Mostra su Mappa codice. In alternativa, aprire il menu di scelta rapida per uno o un gruppo di elementi e scegliere Mostra su Mappa codice.
È anche possibile trascinare gli elementi da Esplora soluzioni, Visualizzazione classi o Visualizzatore oggetti in una mappa codice nuova o esistente. Per includere la gerarchia padre per gli elementi, tenere premuto ctrl mentre si trascinano gli elementi oppure usare il pulsante Includi elementi sulla barra degli strumenti della mappa codici per specificare l'azione predefinita. È anche possibile trascinare i file di assembly dall'esterno di Visual Studio, ad esempio da Esplora risorse.
Nota
Quando aggiungi elementi da un progetto condiviso tra più app, ad esempio Windows Phone o Microsoft Store, questi elementi vengono visualizzati sulla mappa con il progetto di app attualmente attivo. Se si cambia il contesto passando a un altro progetto di applicazione e si aggiungono altri elementi dal progetto condiviso, tali elementi vengono visualizzati con il nuovo progetto di applicazione attivo. Le operazioni eseguite con un elemento nella mappa si applicano solo agli elementi che condividono lo stesso contesto.
La mappa visualizza gli elementi selezionati all'interno degli assembly in cui sono contenuti.
Per esplorare gli elementi, espanderli. Spostare il puntatore del mouse sopra un elemento, quindi scegliere il pulsante con la freccia di espansione (freccia Giù) quando viene visualizzato.
Per espandere tutti gli elementi, selezionarli usando CTRL+A, quindi aprire il menu di scelta rapida per la mappa e scegliere Espandi gruppo.> Tuttavia, questa opzione non è disponibile se l'espansione di tutti i gruppi crea una mappa inutilizzabile o problemi di memoria.
Continuare ad espandere gli elementi a cui si è interessati, fino al livello di classe e membro, se necessario.
Per visualizzare i membri presenti nel codice, ma non vengono visualizzati sulla mappa, fare clic sull'icona Refetch Children nell'angolo superiore sinistro di un gruppo.
Per visualizzare più elementi correlati a quelli sulla mappa, selezionarne uno e scegliere Mostra correlati nella barra degli strumenti della mappa codice, quindi selezionare il tipo di elementi correlati da aggiungere alla mappa. In alternativa, selezionare uno o più elementi, aprire il menu di scelta rapida e quindi scegliere l'opzione Mostra per il tipo di elementi correlati da aggiungere alla mappa. Ad esempio:
Per un assemblyscegliere:
Opzione Descrizione Mostra assembly a cui fa riferimento Aggiungere gli assembly a cui fa riferimento questo assembly. Gli assembly esterni vengono visualizzati nel gruppo Esterni . Mostra assembly che fanno riferimento a Aggiungere gli assembly della soluzione che fanno riferimento a questo assembly. Per uno spazio dei nomiscegliere Mostra assembly contenitore, se non è visibile.
Per una classe o un' interfacciascegliere:
Opzione Descrizione Mostra tipi base Per una classe, aggiungere la classe base e le interfacce implementate.
Per un'interfaccia, aggiungere le interfacce di base.Mostra tipi derivati Per una classe, aggiungere le classi derivate.
Per un'interfaccia, aggiungere le interfacce derivate e le classi o gli struct implementati.Mostra tipi a cui fa riferimento Aggiungere tutte le classi e i membri usati. Mostra tipi che fanno riferimento a Aggiungere tutte le classi e membri che usano la classe. Mostra spazio dei nomi contenitore Aggiungere lo spazio dei nomi del padre. Mostra spazio dei nomi e assembly contenitore Aggiungere la gerarchia del contenitore padre. Mostra tutti i tipi di base Aggiungere la gerarchia di interfacce o di classi base in modo ricorsivo. Mostra tutti i tipi derivati Per una classe, aggiungere tutte le classi derivate in modo ricorsivo.
Per un'interfaccia, aggiungere tutte le interfacce derivate e implementare classi o struct in modo ricorsivo.Per un metodoscegliere:
Opzione Descrizione Mostra metodi chiamati Aggiungere metodi chiamati dal metodo specifico. Mostra campi a cui fa riferimento Aggiungere i campi cui questo metodo fa riferimento. Mostra tipo contenitore Aggiungere il tipo padre. Mostra tipo, spazio dei nomi e assembly contenitore Aggiungere la gerarchia del contenitore padre. Mostra metodi sottoposti a override Per un metodo che esegue l'override di altri metodi o implementa un metodo di interfaccia, aggiungere tutti i metodi astratti o virtuali nelle classi base sottoposte a override e, se disponibile, il metodo di interfaccia implementato. Per un campo o una proprietàscegliere:
Opzione Descrizione Mostra tipo contenitore Aggiungere il tipo padre. Mostra tipo, spazio dei nomi e assembly contenitore Aggiungere la gerarchia del contenitore padre. La mappa visualizza le relazioni. In questo esempio la mappa mostra i metodi chiamati dal metodo e la
Find
relativa posizione nella soluzione o esternamente.Per semplificare la mappa e concentrarsi sulle singole parti, scegliere Filtri nella barra degli strumenti della mappa codice e selezionare solo i tipi di nodi e di collegamenti desiderati. Ad esempio, disattivare la visualizzazione di Cartelle soluzione, Assembly e Spazi dei nomi.
Contenuto correlato
- Condividere le mappe del codice
- Creare mappe codice per C++
- Migliorare le prestazioni della mappa del codice
- Usare le mappe del codice per eseguire il debug delle applicazioni
- Eseguire il mapping dei metodi nello stack di chiamate durante il debug
- Trovare problemi potenziali usando gli analizzatore delle mappe del codice
- Cercare e ridisporre le mappe del codice
- Personalizzare le mappe codice modificando i file DGML