Mapování závislostí pomocí map kódu

V tomto článku se dozvíte, jak vizualizovat závislosti v kódu pomocí map kódu.

Co jsou mapy kódu?

Mapy kódu v sadě Visual Studio vám pomůžou rychleji zjistit, jak kód programu zapadá dohromady, aniž byste museli číst soubory a řádky kódu. Pomocí těchto map můžete vidět uspořádání a vztahy v kódu, včetně jeho struktury a závislostí, jak ho aktualizovat, a odhadnout náklady na navrhované změny.

View dependencies with code maps in Visual Studio

Závislosti kódu můžete mapovat v těchto jazycích:

  • Visual C# nebo Visual Basic v řešení nebo sestaveních (.dll nebo .exe)

  • Nativní nebo spravovaný kód jazyka C nebo C++ v projektech Visual C++, soubory hlaviček (.h nebo #include) nebo binární soubory

  • Projekty a sestavení X++ vytvořené z modulů .NET pro Microsoft Dynamics AX

Poznámka:

U projektů jiných než C# nebo Visual Basic existuje méně možností pro spuštění mapy kódu nebo přidání položek do existujícího mapování kódu. Například nelze kliknout pravým tlačítkem myši na objekt v textovém editoru projektu C++ a přidat ho do mapy kódu. Jednotlivé prvky kódu nebo soubory ale můžete přetáhnout z Průzkumník řešení, zobrazení tříd a prohlížeče objektů.

Požadavky

Pokud chcete vytvořit mapu kódu v sadě Visual Studio, nejprve nainstalujte komponenty mapování kódu a živého ověřování závislostí.

K vytváření a úpravám map kódu potřebujete edici Visual Studio Enterprise. V edicích Visual Studio Community a Professional však můžete otevřít diagramy vygenerované v edici Enterprise, ale nemůžete je upravovat.

Poznámka:

Před sdílením map vytvořených v sadě Visual Studio Enterprise s ostatními, kteří používají Visual Studio Professional, se ujistěte, že jsou viditelné všechny položky na mapě (například skryté položky, rozbalené skupiny a odkazy mezi skupinami).

Přidání mapy kódu

Můžete vytvořit prázdnou mapu kódu a přetáhnout na ni položky, včetně odkazů na sestavení, souborů a složek, nebo můžete vygenerovat mapu kódu pro všechny nebo část vašeho řešení.

Přidání prázdné mapy kódu:

  1. V Průzkumník řešení otevřete místní nabídku pro uzel řešení nejvyšší úrovně. Zvolte Přidat>novou položku.

  2. V dialogovém okně Přidat novou položku v části Nainstalováno zvolte kategorii Obecné .

  3. Zvolte šablonu Dokumentu řízeného grafu (.dgml) a pak vyberte Přidat.

    Tip

    Tato šablona se nemusí zobrazovat abecedně, takže pokud ji nevidíte, posuňte se dolů do dolní části seznamu šablon.

    Ve složce Položky řešení řešení se zobrazí prázdná mapa.

Podobně můžete vytvořit nový soubor mapy kódu, aniž byste ho přidali do svého řešení výběrem možnosti Architektura>Nové mapování kódu nebo Soubor>nový>soubor.

Další informace:

Vygenerování mapy kódu pro vaše řešení

Zobrazení všech závislostí v řešení:

  1. Na řádku nabídek zvolte Architektura>vygenerovat mapu kódu pro řešení. Pokud se váš kód od posledního vytvoření nezměnil, můžete místo toho vybrat architekturu>vygenerovat mapu kódu pro řešení bez sestavení.

    Generate a code map command

    Vygeneruje se mapa, která zobrazuje sestavení nejvyšší úrovně a agregovaná propojení mezi nimi. Čím širší je agregační propojení, tím více závislostí představuje.

  2. Pomocí tlačítka Legenda na panelu nástrojů mapy kódu můžete zobrazit nebo skrýt seznam ikon typu projektu (například Test, Web a Telefon Project), položky kódu (například třídy, metody a vlastnosti) a typy relací (například Dědit z, Implementace a Volání).

    Top-level dependency graph of assemblies

    Toto ukázkové řešení obsahuje složky řešení (testy a komponenty), projekty testů, webové projekty a sestavení. Ve výchozím nastavení se všechny vztahy s obsahem zobrazují jako skupiny, které můžete rozbalit a sbalit. Skupina Externí obsahuje cokoli mimo vaše řešení, včetně závislostí platformy. Externí sestavení obsahuje pouze položky, které jsou používány. Ve výchozím nastavení jsou základní typy systému na mapě skryté, aby se snížila nepotřebnost.

  3. Pokud chcete přejít k podrobnostem mapy, rozbalte skupiny představující projekty a sestavení. Všechno můžete rozbalit stisknutím kombinace kláves CTRL+A, abyste vybrali všechny uzly a potom v místní nabídce možnost Rozbalit.

    Expanding all groups in a code map

  4. To ale nemusí být užitečné pro velké řešení. Ve skutečnosti mohou omezení paměti pro složitá řešení bránit rozšíření všech skupin. Místo toho ho rozbalte, abyste ho viděli uvnitř jednotlivého uzlu. Přesuňte ukazatel myši nad uzel a po zobrazení klikněte na dvojitou šipku (šipku dolů).

    Expanding a node in a code map

    Nebo použijte klávesnici tak, že vyberete položku a stisknete klávesu plus (+). Pokud chcete prozkoumat hlubší úrovně kódu, udělejte to samé pro obory názvů, typy a členy.

    Tip

    Další podrobnosti o práci s mapami kódu pomocí myši, klávesnice a dotykového ovládání najdete v tématu Procházení a změna uspořádání map kódu.

  5. Pokud chcete zjednodušit mapování a zaměřit se na jednotlivé části, zvolte Filtry na panelu nástrojů mapy kódu a vyberte jenom typy uzlů a odkazů, které vás zajímají. Můžete například skrýt všechny kontejnery složky řešení a sestavení.

    Simplify the map by filtering containers

    Mapu můžete také zjednodušit skrytím nebo odebráním jednotlivých skupin a položek z mapy, aniž by to ovlivnilo základní kód řešení.

  6. Pokud chcete zobrazit vztahy mezi položkami, vyberte je v mapě. Barvy odkazů označují typy relací, jak je znázorněno v podokně Legenda .

    View dependencies across your solutions

    V tomto příkladu jsou fialová propojení volání, tečkované odkazy jsou odkazy a světle modré odkazy jsou přístup k polím. Zelené odkazy můžou být dědičnost nebo můžou být agregované odkazy , které označují více než jeden typ relace (nebo kategorie).

    Tip

    Pokud se zobrazí zelený odkaz, nemusí to znamenat, že existuje jenom vztah dědičnosti. Mohou existovat také volání metod, ale ty jsou skryty vztahem dědičnosti. Pokud chcete zobrazit konkrétní typy odkazů, pomocí zaškrtávacích políček v podokně Filtry skryjte typy, které vás zajímají.

  7. Pokud chcete získat další informace o položce nebo odkazu, přesuňte ukazatel na ni, dokud se nezobrazí popisek. Zobrazí se podrobnosti o prvku kódu nebo kategoriích, které odkaz představuje.

    Show the categories of a relationship

  8. Pokud chcete prozkoumat položky a závislosti reprezentované agregačním odkazem, nejprve vyberte odkaz a otevřete jeho místní nabídku. Zvolte Zobrazit odkazy pro přispívání (nebo zobrazit odkazy pro přispívání na nové mapě kódu). Tím se skupiny rozbalí na obou koncích propojení a zobrazí se jenom ty položky a závislosti, které se účastní propojení.

  9. Pokud se chcete zaměřit na konkrétní části mapy, můžete i nadále odebírat položky, které vás zajímají. Pokud například chcete přejít k podrobnostem v zobrazení třídy a člena, jednoduše vyfiltrujte všechny uzly oboru názvů v podokně Filtry .

    Drilling down to class and member level

  10. Dalším způsobem, jak se zaměřit na komplexní mapu řešení, je vygenerovat novou mapu obsahující vybrané položky z existující mapy. Podržte stisknutou klávesu Ctrl a vyberte položky, na které se chcete zaměřit, otevřete místní nabídku a z výběru zvolte Nový graf.

    Show selected items on a new code map

  11. Obsah obsahující kontext se přenese do nové mapy. Skryjte složky řešení a všechny ostatní kontejnery, které nechcete zobrazit pomocí podokna Filtry .

    Filter the containers to simplify the view

  12. Rozbalte skupiny a výběrem položek v mapě zobrazte relace.

    Select items to view the relationships

Další zdroje informací:

Zobrazení závislostí

Předpokládejme, že máte kontrolu kódu, která se provádí v některých souborech s čekajícími změnami. Pokud chcete zobrazit závislosti v těchto změnách, můžete z těchto souborů vytvořit mapu kódu.

Show specific dependencies on a code map

  1. V Průzkumník řešení vyberte projekty, odkazy na sestavení, složky, soubory, typy nebo členy, které chcete mapovat.

    Select the items you want to map

  2. Na panelu nástrojů Průzkumník řešení zvolte Zobrazit na mapěCreate New Graph From Selected Nodes Button kódu. Nebo otevřete místní nabídku pro jednu nebo skupinu položek a zvolte Zobrazit na mapě kódu.

    Položky můžete také přetáhnout z Průzkumník řešení, zobrazení tříd nebo prohlížeče objektů do nové nebo existující mapy kódu. Pokud chcete zahrnout nadřazenou hierarchii položek, stiskněte a podržte při přetahování položek klávesu Ctrl nebo pomocí tlačítka Zahrnout rodiče na panelu nástrojů mapy kódu určete výchozí akci. Soubory sestavení můžete také přetáhnout mimo Visual Studio, například z Průzkumníka Windows.

    Poznámka:

    Když přidáte položky z projektu, který je sdílený napříč více aplikacemi, jako je Windows Telefon nebo Microsoft Store, zobrazí se tyto položky na mapě s aktuálně aktivním projektem aplikace. Pokud změníte kontext na jiný projekt aplikace a přidáte další položky ze sdíleného projektu, tyto položky se nyní zobrazí s nově aktivním projektem aplikace. Operace, které provádíte s položkou na mapě, se vztahují pouze na ty položky, které sdílejí stejný kontext.

  3. Mapa zobrazuje vybrané položky v rámci jejich obsahujících sestavení.

    Selected items shown as groups on the map

  4. Pokud chcete prozkoumat položky, rozbalte je. Přesuňte ukazatel myši nad položku a po zobrazení klikněte na ikonu dvojité šipky (šipka dolů).

    Expand a node in a code map

    Pokud chcete rozbalit všechny položky, vyberte je pomocí kláves Ctrl+A a pak otevřete místní nabídku mapy a zvolte Rozbalit skupinu.> Tato možnost ale není dostupná, pokud rozšíření všech skupin vytvoří nepoužitelné problémy s mapou nebo pamětí.

  5. Pokračujte v rozbalení položek, které vás zajímají, přímo dolů na úroveň třídy a člena v případě potřeby.

    Expand groups to class and member level

    Pokud chcete zobrazit členy, kteří jsou v kódu, ale nezobrazují se na mapě, klikněte na ikonu Refetch Children Icon Znovu načíst podřízené položky v levém horním rohu skupiny.

  6. Pokud chcete zobrazit další položky související s položkami na mapě, vyberte jednu a zvolte Zobrazit související na panelu nástrojů mapy kódu a pak vyberte typ souvisejících položek, které chcete přidat do mapy. Případně vyberte jednu nebo více položek, otevřete místní nabídku a pak zvolte možnost Zobrazit pro typ souvisejících položek, které chcete přidat do mapy. Příklad:

    Pro sestavení zvolte:

    Možnost Popis
    Zobrazit sestavení, která odkazují na tyto odkazy Přidejte sestavení, na které odkazuje toto sestavení. Externí sestavení se zobrazí ve skupině Externí.
    Zobrazit sestavení odkazující na toto Přidejte sestavení do řešení, která odkazují na toto sestavení.

    U oboru názvů zvolte Zobrazit obsahující sestavení, pokud není vidět.

    Pro třídu nebo rozhraní zvolte:

    Možnost Popis
    Zobrazit základní typy V případě třídy přidejte základní třídu a implementovaná rozhraní.

    V rámci rozhraní přidejte základní rozhraní.
    Zobrazit odvozené typy V případě třídy přidejte odvozené třídy.

    V rámci rozhraní přidejte odvozené rozhraní a implementaci tříd nebo struktur.
    Zobrazit typy, které tyto odkazy Přidejte všechny třídy a jejich členy, které tato třída používá.
    Zobrazit typy odkazující na toto Přidejte všechny třídy a jejich členy, které tuto třídu používají.
    Zobrazit obsahující obor názvů Přidejte nadřazený obor názvů.
    Zobrazit obsahující obor názvů a sestavení Přidejte hierarchii nadřazeného kontejneru.
    Zobrazit všechny základní typy Přidejte rekurzivně hierarchii základní třídy nebo rozhraní.
    Zobrazit všechny odvozené typy V případě třídy přidejte všechny odvozené třídy rekurzivně.

    V rámci rozhraní přidejte rekurzivně veškerá odvozená rozhraní a implementaci tříd nebo struktur.

    Pro metodu zvolte:

    Možnost Popis
    Zobrazit metody, které tato volání Přidejte metody, které tato metoda volá.
    Zobrazit pole, která odkazují Přidejte pole, na která odkazuje tato metoda.
    Zobrazit obsahující typ Přidejte nadřazený typ.
    Zobrazit obsahující typ, obor názvů a sestavení Přidejte hierarchii nadřazeného kontejneru.
    Zobrazit přepisované metody V případě metody, která přepíše jiné metody nebo implementuje metodu rozhraní, přidejte všechny abstraktní nebo virtuální metody základních tříd, které jsou přepsány, a případně metodu rozhraní, které je implementováno.

    U pole nebo vlastnosti zvolte:

    Možnost Popis
    Zobrazit obsahující typ Přidejte nadřazený typ.
    Zobrazit obsahující typ, obor názvů a sestavení Přidejte hierarchii nadřazeného kontejneru.

    Show methods called by this member

  7. Mapa zobrazuje relace. V tomto příkladu mapa zobrazuje metody volané metodou Find a jejich umístění v řešení nebo externě.

    Show specific dependencies on a code map

  8. Pokud chcete zjednodušit mapování a zaměřit se na jednotlivé části, zvolte Filtry na panelu nástrojů mapy kódu a vyberte jenom typy uzlů a odkazů, které vás zajímají. Můžete například vypnout zobrazení složek řešení, sestavení a oborů názvů.

    Use the Filter pane to simplify the display