Condividi tramite


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.

Visualizzare le dipendenze con le mappe del codice in Visual Studio

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

  • Progetti 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:

  1. In Esplora soluzioniaprire 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 Invece Architecture>Generate Code Map for Solution Without Building (Genera mappa codice per soluzione senza compilazione).

    Comando di generazione mappa del codice

    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.

  2. 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).

    Grafico dipendenze di primo livello di assembly

    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.

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

    Espansione di tutti i gruppi in una mappa codici

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

    Espansione di un nodo in una mappa codici

    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.

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

    Semplificare la mappa filtrando i contenitori

    È anche possibile semplificare la mappa nascondendo o rimuovendo i singoli gruppi ed elementi dalla mappa, senza modificare il codice della soluzione sottostante.

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

    Visualizzare le dipendenze nelle soluzioni

    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.

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

    Mostra le categorie di una relazione

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

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

    Drill-down dei gruppi a livello di classe e membro

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

    Mostra gli elementi selezionati in una nuova mappa codici

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

    Filtrare i contenitori per semplificare la visualizzazione

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

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

Mostra dipendenze specifiche su una mappa codici

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

    Selezionare gli elementi da mappare

  2. Sulla barra degli strumenti Esplora soluzioni scegliere Mostra su Mappa Pulsante Crea nuovo grafo dai nodi selezionaticodice. 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.

  3. La mappa visualizza gli elementi selezionati all'interno degli assembly in cui sono contenuti.

    Elementi selezionati visualizzati come gruppi sulla mappa

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

    Espandere un nodo in una mappa codici

    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.

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

    Espandere i gruppi a livello di classe e membro

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

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

    Mostra i metodi chiamati da questo membro

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

    Mostra dipendenze specifiche su una mappa codici

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

    Usare il riquadro Filtro per semplificare la visualizzazione