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.

Screenshot che mostra come visualizzare le dipendenze con le mappe del codice in Visual Studio.

È possibile eseguire il mapping delle dipendenze per il codice in queste lingue:

  • 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 binari

  • Progetti e assembly X++ derivati dai moduli .NET per Microsoft Dynamics AX

Annotazioni

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 del 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.

Annotazioni

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 del 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:

  1. In Esplora soluzioni aprire il menu di scelta rapida per il nodo della soluzione di primo livello. Scegliere Aggiungi>nuovo elemento.

  2. Nella finestra di dialogo Aggiungi nuovo elemento , in Installato, scegliere la categoria Generale .

  3. 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:

Generare una mappa del codice per la soluzione

Per visualizzare tutte le dipendenze nella soluzione:

  1. Sulla barra dei menu scegliere Architettura>Genera mappa codice per soluzione. Se il codice non è stato modificato dopo l'ultima compilazione, è possibile selezionare Architecture>Generate Code Map for Solution Without Building (Genera mappa del codice per la soluzione senza compilazione).

    Screenshot che mostra il comando Genera una mappa del codice per la soluzione.

    Viene generata una mappa che mostra gli assembly di primo livello e i collegamenti aggregati tra di essi. Più ampio è il collegamento aggregato, maggiore sarà il numero di dipendenze che rappresenta.

  2. Usare il pulsante Legenda sulla barra degli strumenti della mappa del codice per visualizzare o nascondere l'elenco di icone del tipo di progetto (ad esempio Test, Web e Phone Project), elementi di codice (ad esempio Classi, Metodi e Proprietà) e tipi di relazione (ad esempio Eredita da, Implementa e Chiamate).

    Schermata che mostra un grafico delle dipendenze a livello superiore degli assembly.

    Questa soluzione di esempio contiene cartelle di soluzioni (test e componenti), progetti di test, progetti Web e assembly. Per impostazione predefinita, tutte le relazioni di contenimento vengono visualizzate come gruppi, che è possibile espandere e comprimere. Il gruppo Externals contiene qualsiasi elemento esterno alla soluzione, incluse le dipendenze della piattaforma. I moduli esterni mostrano solo gli elementi utilizzati. Per impostazione predefinita, i tipi di base di sistema sono nascosti sulla mappa per ridurre la confusione.

  3. Per eseguire il drill-down nella mappa, espandere i gruppi che rappresentano progetti e assiemi. È possibile espandere tutto premendo CTRL+A per selezionare tutti i nodi e quindi scegliendo Gruppo, Espandi dal menu di scelta rapida.

    Screenshot che mostra tutti i gruppi espansi in una mappa di codice.

  4. Tuttavia, questo potrebbe non essere utile per una soluzione di grandi dimensioni. Infatti, per soluzioni complesse, le limitazioni della memoria possono impedire l'espansione di tutti i gruppi. Al contrario, per vedere all'interno di un singolo nodo, espanderlo. Spostare il puntatore del mouse sopra il nodo e quindi fare clic sulla freccia giù quando viene visualizzata.

    Screenshot che mostra come espandere un nodo in una mappa del codice.

    In alternativa, usare la tastiera selezionando l'elemento e quindi premendo il tasto più (+). Per esplorare livelli di codice più approfonditi, eseguire la stessa operazione per i namespace, 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.

  5. Per semplificare la mappa e concentrarsi su singole parti, scegliere Filtri sulla barra degli strumenti della mappa codici e selezionare solo i tipi di nodi e i collegamenti a cui si è interessati. Ad esempio, è possibile nascondere tutte le cartelle della soluzione e i contenitori assembly.

    Screenshot che mostra come semplificare una mappa filtrando i contenitori.

    È anche possibile semplificare la mappa nascondendo o rimuovendo singoli gruppi e elementi dalla mappa, senza influire sul codice della soluzione sottostante.

  6. Per visualizzare le relazioni tra gli elementi, selezionarle nella mappa. I colori dei collegamenti indicano i tipi di relazione, come illustrato nel riquadro Legenda .

    Screenshot che mostra come visualizzare le dipendenze tra le soluzioni.

    In questo esempio, i collegamenti viola sono chiamate, i collegamenti punteggiati sono riferimenti e i collegamenti blu chiaro sono l'accesso al campo. I collegamenti verdi possono essere ereditarietà oppure possono essere collegamenti aggregati che indicano più tipi di relazione (o categoria).

    Suggerimento

    Se viene visualizzato un collegamento verde, potrebbe non significare che ci sia solo una relazione di ereditarietà. Potrebbero essere presenti anche chiamate al metodo, ma queste sono 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.

  7. Per ottenere altre informazioni su un elemento o un collegamento, spostare il puntatore su di esso fino a quando non viene visualizzata una descrizione comando. Vengono visualizzati i dettagli di un elemento di codice o delle categorie rappresentate da un collegamento.

    Screenshot che mostra le categorie di una relazione.

  8. Per esaminare elementi e dipendenze rappresentati da un collegamento aggregato, selezionare prima il collegamento e quindi aprire il relativo menu di scelta rapida. Scegliere Mostra collegamenti contributi (o Mostra collegamenti con contributi nella nuova mappa del codice). In questo modo i gruppi vengono espansi a entrambe le estremità del collegamento e vengono visualizzati solo gli elementi e le dipendenze che partecipano al collegamento.

  9. Per concentrarsi su parti specifiche della mappa, è possibile continuare a rimuovere gli elementi a cui non si è interessati. Ad esempio, per approfondire la classe e la vista membri, è sufficiente filtrare tutti i nodi dello spazio dei nomi nel riquadro Filtri.

    Screenshot che mostra come eseguire il drill-down a livello di classe e membro.

  10. Un altro modo per concentrarsi su una mappa di soluzioni complessa consiste nel generare una nuova mappa contenente 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.

    Screenshot che mostra come visualizzare gli elementi selezionati in una nuova mappa del codice.

  11. Il contesto di contenimento viene portato nella nuova mappa. Nascondere le cartelle della soluzione e tutti gli altri contenitori che non si desidera visualizzare usando il riquadro Filtri .

    Screenshot che mostra come filtrare i contenitori per semplificare la visualizzazione.

  12. Espandere i gruppi e selezionare gli elementi nella mappa per visualizzare le relazioni.

    Screenshot che mostra la selezione di elementi per visualizzare le relazioni.

Vedere anche:

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 tali modifiche, è possibile creare una mappa del codice da tali file.

Screenshot che mostra le dipendenze su una mappa del codice.

  1. 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.

    Annotazioni

    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 modifica il contesto in un altro progetto di app e si aggiungono altri elementi dal progetto condiviso, questi elementi vengono visualizzati con il progetto di app appena attivo. Le operazioni eseguite con un elemento sulla mappa si applicano solo agli elementi che condividono lo stesso contesto.

  2. La mappa mostra gli elementi selezionati nei loro assiemi di appartenenza.

    Screenshot che mostra gli elementi come gruppi in una mappa.

  3. Per esplorare gli elementi, è necessario espanderli. Spostare il puntatore del mouse sopra un elemento, quindi fare clic sull'icona della freccia giù quando viene visualizzata.

    Screenshot che mostra la freccia per aggiungere sottoelementi.

    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 o problemi di memoria inutilizzabili.

  4. Continuare ad espandere gli elementi a cui si è interessati, fino al livello di classe e membro, se necessario.

    Screenshot che mostra i gruppi espansi al livello di classe e membro.

    Per visualizzare i membri presenti nel codice ma non vengono visualizzati sulla mappa, fare clic sull'icona Refetch ChildrenIcon Refetch Children nell'angolo superiore sinistro di un gruppo.

  5. Per visualizzare altri elementi correlati a quelli sulla mappa, selezionare uno e scegliere Mostra elementi correlati sulla 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 assemblaggio, scegli:

    Opzione Descrizione
    Mostra gli assembly a cui questo fa riferimento Aggiungere gli assembly a cui questo assembly fa riferimento. Gli assembly esterni vengono visualizzati nel gruppo Externals .
    Mostra gli assembly che fanno riferimento a questo Aggiungere gli assembly nella soluzione che fanno riferimento a questo assembly.

    Per un namespace, scegliere Mostra assembly contenitore, se non è visibile.

    Per una classe o un'interfaccia, scegliere:

    Opzione Descrizione
    Mostra tipi di base Per una classe, aggiungere la classe di 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 di implementazione.
    Mostra tipi a cui si fa riferimento Aggiungere tutte le classi e i relativi membri usati da questa classe.
    Mostra tipi che fanno riferimento a questo Aggiungere tutte le classi e i relativi membri che usano questa classe.
    Mostra il namespace contenitore Aggiungere lo spazio dei nomi padre.
    Mostra spazio dei nomi e assembly contenente Aggiungi la gerarchia dei contenitori padre.
    Mostra tutti i tipi di base Aggiungere in modo ricorsivo la classe di base o la gerarchia dell'interfaccia.
    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 metodo, scegliere:

    Opzione Descrizione
    Mostra metodi che chiamano Aggiungere metodi chiamati da questo metodo.
    Mostra campi a cui questi fanno riferimento Aggiungere campi a cui fa riferimento questo metodo.
    Mostra tipo contenitore Aggiungere il tipo padre.
    Mostra tipo che contiene, namespace e assembly Aggiungere la gerarchia del contenitore padre.
    Mostra metodi sovrascritti Per un metodo che esegue l'override di altri metodi o implementa il metodo di un'interfaccia, aggiungere tutti i metodi astratti o virtuali nelle classi di base sottoposte a override e, se presente, il metodo dell'interfaccia implementato.

    Per un campo o una proprietà, scegliere:

    Opzione Descrizione
    Mostra tipo contenitore Aggiungi il tipo padre.
    Mostra il tipo contenente, lo spazio dei nomi e l'assembly Aggiungere la gerarchia del contenitore padre.

    Screenshot che mostra il comando per visualizzare i metodi.

  6. La mappa mostra le relazioni. In questo esempio, la mappa mostra i metodi chiamati dal metodo Find e la loro posizione nella soluzione o esternamente.

    Screenshot che mostra dipendenze specifiche in una mappa del codice.

  7. Per semplificare la mappa e concentrarsi su singole parti, scegliere Filtri sulla barra degli strumenti della mappa codici e selezionare solo i tipi di nodi e i collegamenti a cui si è interessati. Ad esempio, disattiva la visualizzazione di cartelle della soluzione, assembly e namespace.

    Screenshot che mostra le opzioni filtro per semplificare la visualizzazione.