Share via


Mappare dipendenze specifiche sulle mappe di codice

Per comprendere le dipendenze specifiche nel codice, visualizzarle creando mappe codici (solo Visual Studio Ultimate). È quindi possibile esplorare queste relazioni tramite la mappa, visualizzata accanto al codice. In questo modo è possibile tenere traccia della propria posizione nel codice mentre si lavora.

Mappa codici - Mappare le relazioni nel codice

Una freccia verde indica la posizione del cursore nel codice. È possibile inserire note su una mappa, come su carta.

Le mappe codici consentono di evitare di perdersi nelle codebase di grandi dimensioni, nel codice con cui si ha poca familiarità o nel codice legacy. Quando si esegue il debug, ad esempio, potrebbe essere necessario esaminare il codice in file e progetti diversi. Le mappe codici consentono di esplorare queste parti di codice e di vedere le relazioni tra di esse. Non è necessario ricordare tutto il codice, tenere traccia dei file o disegnare un diagramma su carta separato. Se è necessario interrompere il lavoro, le mappe codici consentono di aggiornare la memoria relativa al codice usato.

Creare o aprire una mappa codici

Per creare una mappa codici sono necessari Visual Studio Ultimate 2013 e una soluzione con codice Visual C# .NET, Visual Basic .NET, X++ per Microsoft Dynamics AX o C++ (supporto limitato). Per ottenere le relazioni contraddistinte da colori, è necessario avere Visual Studio 2013 Update 3. Per mappare codice X++ e codice condiviso tra più app è necessario disporre di Visual Studio 2013 Update 2 o versione successiva.

È possibile creare una mappa codici eseguendo le operazioni seguenti:

  • Fare clic con il pulsante destro del mouse su un elemento, ad esempio un file di origine o un file binario in Esplora soluzioni, e selezionare Mostra in mappa codici. Verrà creata una mappa codici per l'elemento selezionato.

  • Trascinare un elemento, ad esempio un file di origine o un file binario, da Esplora soluzioni a una mappa codici aperta per includere e/o evidenziare l'elemento nella mappa.

  • Fare clic con il pulsante destro del mouse su un'area vuota della finestra dell'editor e scegliere Mostra in mappa codici. Verrà creata una nuova mappa codici vuota.

  • Fare clic con il pulsante destro del mouse su un oggetto o una classe nella finestra dell'editor e scegliere Mostra in mappa codici. Verrà creata una mappa codici per l'elemento selezionato. È anche possibile trovare tutti i riferimenti o mostrare gli elementi correlati nella mappa codici usando questo menu.

  • Scegliere Mappa codici dal menu Debug quando l'applicazione viene sospesa.

  • Da un file di IntelliTrace aperto o come grafico di dipendenze dal menu Architettura.

È possibile visualizzare, apportare modifiche limitate e esplorare le mappe codici usando Visual Studio Premium 2013 o Visual Studio Professional 2013.

Prima di condividere le mappe con altri utenti che usano l'edizione Premium o Professional, assicurarsi che tutti gli elementi nella mappa siano visibili, ad esempio elementi nascosti, gruppi espansi e collegamenti tra gruppi.

Per il funzionamento delle mappe codici, vedere Informazioni sul codice complesso con mappa dei codici (Channel 9)

Informazioni sul problema

Si supponga che sia presente un bug in un programma di disegno su cui si sta lavorando. Per riprodurre il bug, aprire la soluzione in Visual Studio Ultimate e premere F5 per avviare il debug.

Quando si disegna una linea e si sceglie l'opzione Annulla ultimo tratto non succede niente finché non si disegna la riga successiva.

Mappa codici - Ripetizione bug

Di conseguenza, iniziare l'analisi cercando il metodo Undo. Il metodo si trova nella classe PaintCanvas.

Mappa codici - Trovare codice

Avviare il mapping del codice

A questo punto, è possibile avviare il mapping del metodo undo e delle relative relazioni. Nell'editor di codice aggiungere il metodo undo e i campi a cui viene fatto riferimento a una nuova mappa codici. Quando si crea una nuova mappa, l'indicizzazione del codice potrebbe richiedere del tempo. Ciò consente alle operazioni successive di essere eseguite più velocemente.

Mappa codici - Visualizzare il metodo e i campi correlati

Suggerimento

L'evidenziazione verde indica gli ultimi elementi aggiunti alla mappa.La freccia verde indica la posizione del cursore nel codice.Le frecce tra gli elementi rappresentano relazioni diverse.È possibile ottenere altre informazioni sugli elementi nella mappa esaminando le relative descrizioni comandi.

Mappa codici - Visualizzare le descrizioni comandi

Passare al codice ed esaminarlo dal mapping

Per visualizzare la definizione di codice per ogni campo, fare doppio clic sul campo nella mappa o selezionare il campo e premere F12. La freccia verde si sposta tra gli elementi nella mappa. Il cursore nell'editor di codice viene spostato automaticamente.

Mappa codici - Esaminare la definizione di campo

Mappa codici - Esaminare la definizione di campo

Suggerimento

È inoltre possibile spostare la freccia verde sulla mappa spostando il cursore nell'editor di codice.

Informazioni sulle relazioni tra parti di codice

A questo punto si desidera sapere quale altro codice interagisce con i campi history e paintObjects. È possibile aggiungere tutti i metodi che fanno riferimento a questi campi alla mappa. Questa operazione può essere eseguita dalla mappa o dal codice.

Mappa codici - Trovare tutti i riferimenti

Modificare il layout per ridisporre il flusso di relazioni e rendere la mappa più facile da leggere. È inoltre possibile spostare elementi nella mappa trascinandoli.

Mappa codici - Modificare il layout

Suggerimento

Per impostazione predefinita, l'opzione Layout incrementale è attivata.Ciò consente di ridisporre la mappa il meno possibile quando vengono aggiunti nuovi elementi.Per ridisporre l'intera mappa ogni volta che si aggiungono nuovi elementi, disabilitare Layout incrementale.

Mappa codici - Modificare il layout

Esaminiamo questi metodi. Nella mappa fare doppio clic sul metodo PaintCanvas oppure scegliere questo metodo e premere F12. Questo metodo crea history e paintObjects come elenchi vuoti.

Mappa codici - Esaminare la definizione del metodo

A questo punto, ripetere gli stessi passaggi per esaminare la definizione del metodo clear. Il metodo clear esegue alcune attività con paintObjects e history e quindi chiama il metodo Repaint.

Mappa codici - Esaminare la definizione del metodo

A questo punto, esaminare la definizione del metodo addPaintObject. Tale metodo esegue alcune attività con history e paintObjects. e chiama inoltre Repaint.

Mappa codici - Esaminare la definizione del metodo

Individuare il problema esaminando il mapping

Sembra che tutti i metodi che modificano history e paintObjects chiamino Repaint. Tuttavia il metodo undo non chiama Repaint, anche se undo modifica gli stessi campi. Pertanto, è possibile risolvere il problema chiamando Repaint da undo.

Mappa codici - Individuare la chiamata al metodo mancante

Se non fosse stata disponibile una mappa che mostrava questa chiamata mancante, sarebbe stato più difficile individuare il problema, specialmente in caso di codice più complesso.

Condividere l'individuazione e passaggi successivi

Prima che l'utente o un altro sviluppatore corregga il bug, è possibile inserire note nella mappa sul problema e su come correggerlo.

Mappa codici - Commentare e contrassegnare elementi per il completamento

Ad esempio, è possibile aggiungere commenti alla mappa e contrassegnare gli elementi usando i colori.

Mappa codici - Elementi commentati e contrassegnati

Se Microsoft Outlook è installato, è possibile inviare la mappa ad altre persone tramite posta elettronica. È inoltre possibile esportare la mappa come un'immagine o in un altro formato.

Mappa codici - Condividere, esportare, inviare

Correggere il problema e visualizzare le operazioni effettuate

Per correggere il bug, aggiungere la chiamata per Repaint a undo.

Mappa codici - Aggiungere la chiamata al metodo mancante

Per confermare la correzione, riavviare la sessione di debug e tentare di riprodurre il bug. A questo punto l'opzione Annulla ultimo tratto funziona come previsto e consente di verificare che le correzioni apportate siano corrette.

Mappa codici - Confermare la correzione del codice

È possibile aggiornare la mappa per mostrare la correzione apportata.

Mappa codici - Aggiornare la mappa con la chiamata al metodo mancante

La mappa mostrerà un collegamento tra undo e Repaint.

Mappa codici - Mappa aggiornata con la chiamata al metodo

Nota

Quando si aggiorna la mappa, è possibile che venga visualizzato un messaggio che indica che l'indice di codice usato per creare la mappa è stato aggiornato.Ciò significa che un utente ha modificato il codice e di conseguenza la mappa non corrisponde al codice corrente.L'aggiornamento della mappa non verrà arrestato, ma potrebbe essere necessario ricreare la mappa per confermare che corrisponde al codice.

A questo punto l'analisi è terminata. Il problema è stato individuato e corretto eseguendo il mapping del codice. Si dispone inoltre di una mappa che consente di spostarsi nel codice e di ricordare quanto indicato e che mostra i passaggi eseguiti per correggere il problema.

Vedere anche

Concetti

Mappare i metodi sullo stack di chiamate durante il debug in Visual Studio

Visualizzare codice