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.

View dependencies with code maps 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 (con estensione 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 Convalidadelle 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).

    Generate a code map command

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

    Top-level dependency graph of assemblies

    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.

    Expanding all groups in a code map

  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.

    Expanding a node in a code map

    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.

    Simplify the map by filtering containers

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

    View dependencies across your solutions

    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.

    Show the categories of a relationship

  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 .

    Drilling down to class and member level

  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.

    Show selected items on a new code map

  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 .

    Filter the containers to simplify the view

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

    Select items to view the relationships

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.

Show specific dependencies on a code map

  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.

    Select the items you want to map

  2. Sulla barra degli strumenti Esplora soluzioni scegliere Mostra su MappaCreate New Graph From Selected Nodes Button 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 Telefono o Microsoft Store, tali 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.

    Selected items shown as groups on the map

  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.

    Expand a node in a code map

    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.

    Expand groups to class and member level

    Per visualizzare i membri presenti nel codice, ma non vengono visualizzati sulla mappa, fare clic sull'icona Refetch Children nell'angolo Refetch Children Icon 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.

    Show methods called by this member

  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.

    Show specific dependencies on a code map

  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.

    Use the Filter pane to simplify the display