Mapuj zależności za pomocą map kodu

W tym artykule dowiesz się, jak wizualizować zależności w kodzie za pomocą map kodu.

Co to są mapy kodu?

W programie Visual Studio mapy kodu pomagają szybciej zobaczyć, jak kod programu pasuje do siebie bez odczytywania plików i wierszy kodu. Dzięki tym mapom możesz zobaczyć organizację i relacje w kodzie, w tym jego strukturę i jej zależności, sposób aktualizowania i szacowania kosztów proponowanych zmian.

View dependencies with code maps in Visual Studio

Zależności można mapować na kod w następujących językach:

  • Visual C# lub Visual Basic w rozwiązaniu lub zestawach (dll lub .exe)

  • Natywny lub zarządzany kod C lub C++ w projektach Visual C++, plikach nagłówków (.h lub #include) lub plikach binarnych

  • Projekty i zestawy X++ utworzone z modułów platformy .NET dla programu Microsoft Dynamics AX

Uwaga

W przypadku projektów innych niż C# lub Visual Basic istnieje mniej opcji uruchamiania mapy kodu lub dodawania elementów do istniejącej mapy kodu. Na przykład nie można kliknąć prawym przyciskiem myszy obiektu w edytorze tekstów projektu C++ i dodać go do mapy kodu. Można jednak przeciągać i upuszczać poszczególne elementy kodu lub pliki z Eksplorator rozwiązań, widoku klas i przeglądarki obiektów.

Wymagania wstępne

Aby utworzyć mapę kodu w programie Visual Studio, najpierw zainstaluj składniki mapowania kodu i weryfikacji zależności na żywo

Aby tworzyć i edytować mapy kodu, potrzebujesz wersji Visual Studio Enterprise. Jednak w wersjach Visual Studio Community i Professional można otwierać diagramy wygenerowane w wersji Enterprise, ale nie można ich edytować.

Uwaga

Przed udostępnieniem map utworzonych w programie Visual Studio Enterprise innym osobom korzystającym z programu Visual Studio Professional upewnij się, że wszystkie elementy na mapie (takie jak ukryte elementy, rozwinięte grupy i linki między grupami) są widoczne.

Dodawanie mapy kodu

Możesz utworzyć pustą mapę kodu i przeciągnąć na nią elementy, w tym odwołania do zestawów, pliki i foldery albo wygenerować mapę kodu dla wszystkich lub części rozwiązania.

Aby dodać pustą mapę kodu:

  1. W Eksplorator rozwiązań otwórz menu skrótów dla węzła rozwiązania najwyższego poziomu. Wybierz pozycję Dodaj>nowy element.

  2. W oknie dialogowym Dodawanie nowego elementu w obszarze Zainstalowane wybierz kategorię Ogólne.

  3. Wybierz szablon Dokument grafu kierowanego (dgml), a następnie wybierz pozycję Dodaj.

    Napiwek

    Ten szablon może nie być widoczny alfabetycznie, więc przewiń w dół do dołu listy szablonów, jeśli nie widzisz go.

    Pusta mapa zostanie wyświetlona w folderze Elementy rozwiązania.

Podobnie możesz utworzyć nowy plik mapy kodu bez dodawania go do rozwiązania, wybierając pozycję Architektura>Nowa mapa kodu lub Nowy>plik pliku.>

Więcej informacji:

Generowanie mapy kodu dla rozwiązania

Aby wyświetlić wszystkie zależności w rozwiązaniu:

  1. Na pasku menu wybierz pozycję Architektura>Generuj mapę kodu dla rozwiązania. Jeśli kod nie uległ zmianie od czasu ostatniego skompilowania, możesz wybrać opcję Architektura>Generuj mapę kodu dla rozwiązania bez kompilowania.

    Generate a code map command

    Generowana jest mapa przedstawiająca zestawy najwyższego poziomu i zagregowane połączenia między nimi. Szerszy link agregacji, tym więcej zależności reprezentuje.

  2. Użyj przycisku Legenda na pasku narzędzi mapy kodu, aby wyświetlić lub ukryć listę ikon typu projektu (takich jak Test, Sieć Web i Telefon Project), elementy kodu (takie jak klasy, metody i właściwości) oraz typy relacji (takie jak Dziedziczy z, Implementowanie i Wywołania).

    Top-level dependency graph of assemblies

    To przykładowe rozwiązanie zawiera foldery rozwiązań (testy i składniki), projekty testowe, projekty internetowe i zestawy. Domyślnie wszystkie relacje zawierające są wyświetlane jako grupy, które można rozwinąć i zwinąć. Grupa Externals zawiera wszystkie elementy poza rozwiązaniem, w tym zależności platformy. Zestawy zewnętrzne pokazują tylko te elementy, które są używane. Domyślnie typy podstawowe systemu są ukryte na mapie w celu zmniejszenia bałaganu.

  3. Aby przejść do szczegółów mapy, rozwiń grupy reprezentujące projekty i zestawy. Wszystko można rozwinąć, naciskając klawisze CTRL+A , aby wybrać wszystkie węzły, a następnie wybierając pozycję Grupa, Rozwiń z menu skrótów.

    Expanding all groups in a code map

  4. Jednak może to nie być przydatne w przypadku dużego rozwiązania. W przypadku złożonych rozwiązań ograniczenia pamięci mogą uniemożliwić rozszerzanie wszystkich grup. Zamiast tego, aby zobaczyć wewnątrz pojedynczego węzła, rozwiń go. Przesuń wskaźnik myszy w górnej części węzła, a następnie kliknij strzałkę w dół po wyświetleniu.

    Expanding a node in a code map

    Możesz też użyć klawiatury, wybierając element, a następnie naciskając klawisz plus (+). Aby poznać bardziej szczegółowe poziomy kodu, wykonaj te same czynności w przypadku przestrzeni nazw, typów i elementów członkowskich.

    Napiwek

    Aby uzyskać więcej informacji na temat pracy z mapami kodu przy użyciu myszy, klawiatury i dotyku, zobacz Przeglądanie i rozmieszczanie map kodu.

  5. Aby uprościć mapę i skupić się na poszczególnych częściach, wybierz pozycję Filtry na pasku narzędzi mapy kodu i wybierz tylko typy węzłów i linki, które cię interesują. Można na przykład ukryć wszystkie kontenery Folder rozwiązania i Zestaw.

    Simplify the map by filtering containers

    Możesz również uprościć mapę, ukrywając lub usuwając poszczególne grupy i elementy z mapy bez wpływu na podstawowy kod rozwiązania.

  6. Aby wyświetlić relacje między elementami, wybierz je na mapie. Kolory łączy wskazują typy relacji, jak pokazano w okienku Legenda .

    View dependencies across your solutions

    W tym przykładzie purpurowe łącza są wywołaniami, łącza kropkowane są odwołaniami, a jasnoniebieskie linki są dostępem do pól. Zielone łącza mogą być dziedziczeniem lub mogą być łączami agregowanymi, które wskazują więcej niż jeden typ relacji (lub kategoria).

    Napiwek

    Jeśli widzisz zielony link, może to nie oznaczać, że istnieje tylko relacja dziedziczenia. Mogą również występować wywołania metod, ale są one ukryte przez relację dziedziczenia. Aby wyświetlić określone typy łączy, użyj pól wyboru w okienku Filtry , aby ukryć typy, których nie interesujesz.

  7. Aby uzyskać więcej informacji o elemencie lub linku, przenieś wskaźnik na jego wierzchu do momentu wyświetlenia etykietki narzędzia. Spowoduje to wyświetlenie szczegółów elementu kodu lub kategorii reprezentowanych przez łącze.

    Show the categories of a relationship

  8. Aby zbadać elementy i zależności reprezentowane przez link agregacji, najpierw wybierz link, a następnie otwórz menu skrótów. Wybierz pozycję Pokaż linki współtworzenia (lub Pokaż linki współtworzenia na nowej mapie kodu). Spowoduje to rozwinięcie grup na obu końcach linku i wyświetlenie tylko tych elementów i zależności, które uczestniczą w linku.

  9. Aby skoncentrować się na określonych częściach mapy, możesz nadal usuwać elementy, których nie interesujesz. Aby na przykład przejść do szczegółów widoku klas i składowych, po prostu przefiltruj wszystkie węzły przestrzeni nazw w okienku Filtry.

    Drilling down to class and member level

  10. Innym sposobem skupienia się na złożonej mapie rozwiązań jest wygenerowanie nowej mapy zawierającej wybrane elementy z istniejącej mapy. Przytrzymaj klawisze Ctrl podczas wybierania elementów, na których chcesz skupić się, otwórz menu skrótów i wybierz pozycję Nowy wykres z zaznaczenia.

    Show selected items on a new code map

  11. Kontekst zawierający jest przenoszony do nowej mapy. Ukryj foldery rozwiązań i inne kontenery, które nie chcesz wyświetlać przy użyciu okienka Filtry.

    Filter the containers to simplify the view

  12. Rozwiń grupy i wybierz elementy na mapie, aby wyświetlić relacje.

    Select items to view the relationships

Zobacz również:

Wyświetlanie zależności

Załóżmy, że masz przegląd kodu do wykonania w niektórych plikach z oczekującymi zmianami. Aby zobaczyć zależności w tych zmianach, możesz utworzyć mapę kodu na podstawie tych plików.

Show specific dependencies on a code map

  1. W Eksplorator rozwiązań wybierz projekty, odwołania do zestawów, foldery, pliki, typy lub składowe, które chcesz mapować.

    Select the items you want to map

  2. Na pasku narzędzi Eksplorator rozwiązań wybierz pozycję Pokaż na mapie Create New Graph From Selected Nodes Buttonkodu. Możesz też otworzyć menu skrótów dla jednej lub grupy elementów i wybrać pozycję Pokaż na mapie kodu.

    Możesz również przeciągać elementy z Eksplorator rozwiązań, widoku klas lub przeglądarki obiektów do nowej lub istniejącej mapy kodu. Aby uwzględnić hierarchię nadrzędną elementów, naciśnij i przytrzymaj klawisz Ctrl podczas przeciągania elementów lub użyj przycisku Uwzględnij elementy nadrzędne na pasku narzędzi mapy kodu, aby określić akcję domyślną. Można również przeciągać pliki zestawów spoza programu Visual Studio, na przykład z Poziomu Eksploratora Windows.

    Uwaga

    Po dodaniu elementów z projektu udostępnionego w wielu aplikacjach, takich jak Windows Telefon lub Microsoft Store, te elementy są wyświetlane na mapie z aktualnie aktywnym projektem aplikacji. Po zmianie kontekstu do innego projektu aplikacji i dodaniu większej liczby elementów z udostępnionego projektu pojawiają się elementy z projektem nowych aktywnych aplikacji. Operacje wykonywane za pomocą elementu na mapie dotyczą tylko tych elementów, które współużytkują ten sam kontekst.

  3. Mapa przedstawia wybrane elementy w ich zestawach zawierających.

    Selected items shown as groups on the map

  4. Aby eksplorować elementy, rozwiń je. Przesuń wskaźnik myszy w górnej części elementu, a następnie kliknij ikonę strzałki w dół po wyświetleniu.

    Expand a node in a code map

    Aby rozwinąć wszystkie elementy, zaznacz je przy użyciu klawiszy Ctrl+A, a następnie otwórz menu skrótów dla mapy i wybierz pozycję Rozwiń grupę.> Ta opcja nie jest jednak dostępna, jeśli rozszerzenie wszystkich grup powoduje problemy z mapą lub pamięcią, których nie można używać.

  5. W razie potrzeby kontynuuj rozwijanie interesujących Cię elementów, aż do poziomu klasy i elementu członkowskiego.

    Expand groups to class and member level

    Aby wyświetlić członków w kodzie, ale nie są wyświetlane na mapie, kliknij ikonę Refetch Children Icon Pobierz elementy podrzędne w lewym górnym rogu grupy.

  6. Aby wyświetlić więcej elementów związanych z elementami na mapie, wybierz jeden i wybierz pozycję Pokaż powiązane na pasku narzędzi mapy kodu, a następnie wybierz typ powiązanych elementów, które mają zostać dodane do mapy. Możesz też wybrać co najmniej jeden element, otworzyć menu skrótów, a następnie wybrać opcję Pokaż typ powiązanych elementów do dodania do mapy. Na przykład:

    W przypadku zestawu wybierz:

    Opcja Opis
    Pokaż zestawy, do których się odwołuje Dodaj zestawy, do których odwołuje się ten zestaw. Zestawy zewnętrzne są wyświetlane w grupie Zewnętrzne.
    Pokaż zestawy odwołujące się do tego Dodaj zestawy w rozwiązaniu odwołującym się do tego zestawu.

    W obszarze nazw wybierz pozycję Pokaż zawierający zestaw, jeśli nie jest widoczny.

    W przypadku klasy lub interfejsu wybierz:

    Opcja Opis
    Pokaż typy podstawowe Dla klasy dodaj klasę bazową i implementowane interfejsy.

    Dla interfejsu dodaj interfejsy podstawowe.
    Pokaż typy pochodne Dla klasy dodaj klasy pochodne.

    Dla interfejsu dodaj interfejsy pochodne i implementujące klasy lub struktury.
    Pokaż typy, do których się odwołuje Dodaj wszystkie klasy i używane przez nie składowe.
    Pokaż typy odwołujące się do tego Dodaj wszystkie klasy oraz ich składowe, które używają tej klasy.
    Pokaż zawierającą przestrzeń nazw Dodaj nadrzędną przestrzeń nazw.
    Pokazywanie zawierającej przestrzeń nazw i zestaw Dodaj hierarchię kontenera nadrzędnego.
    Pokaż wszystkie typy podstawowe Dodaj cyklicznie klasę bazową lub hierarchię interfejsu.
    Pokaż wszystkie typy pochodne Dla klasy dodaj wszystkie klasy pochodne cyklicznie.

    Dla interfejsu, dodaj wszystkie interfejsy pochodne i cyklicznie implementujące klasy lub struktury.

    W przypadku metody wybierz:

    Opcja Opis
    Pokaż metody, które wywołuje Dodaj metody, które wywołuje ta metoda.
    Pokaż pola, do których się odwołuje Dodaj pola, do których odwołuje się ta metoda.
    Pokaż typ zawierający Dodaj typ nadrzędny.
    Pokaż typ, przestrzeń nazw i zestaw Dodaj hierarchię kontenera nadrzędnego.
    Pokaż metody przesłonięcia Dla metody, która zastępuje inne metody lub implementuje metodę interfejsu, należy dodać wszystkie metody abstrakcyjne lub wirtualne w klasach bazowych, które są zastępowane, oraz — jeśli istnieje — implementowaną metodę interfejsu.

    W przypadku pola lub właściwości wybierz:

    Opcja Opis
    Pokaż typ zawierający Dodaj typ nadrzędny.
    Pokaż typ, przestrzeń nazw i zestaw Dodaj hierarchię kontenera nadrzędnego.

    Show methods called by this member

  7. Mapa pokazuje relacje. W tym przykładzie mapa przedstawia metody wywoływane przez metodę Find i ich lokalizację w rozwiązaniu lub zewnętrznie.

    Show specific dependencies on a code map

  8. Aby uprościć mapę i skupić się na poszczególnych częściach, wybierz pozycję Filtry na pasku narzędzi mapy kodu i wybierz tylko typy węzłów i linki, które cię interesują. Na przykład wyłącz wyświetlanie folderów rozwiązań, zestawów i przestrzeni nazw.

    Use the Filter pane to simplify the display