Поделиться через


Практическое руководство. Изучение кода с помощью графов зависимостей

В Visual Studio Ultimate воспользуйтесь графами зависимостей для получения информации об организации и связях в имеющемся коде. Эти графы представляют структуры, в качестве узлов и связи, в качестве ссылок, которые отображаются как стрелки между узлами. Чтобы сформировать граф см. Практическое руководство. Создание графов зависимостей для кода .NET.

В следующем примере показано представление структур и связей с помощью графов в виде узлов и ссылок:

Граф зависимостей с узлами и связями

Узлы и ссылки в графе

В следующем примере показано представление структур и связей содержания с помощью графов в виде групп:

Граф зависимостей со сгруппированными узлами

Сгруппированные узлы в графе

Предупреждение

Граф показывает только успешно построенные зависимости для кода.Компоненты и их содержимое, не будут отображены при возникновении ошибки построения для этих компонентов.Убедитесь, что компонент действительно построен и имеет зависимости перед принятием решений по архитектуре на основании графа.

В этом разделе

  • Исследование зависимостей в графе

  • Обнаружение проблемных областей

Исследование зависимостей в графе

Зависимости в графе представлены следующими типами ссылок:

  • Отдельная ссылка представляет единичную зависимость между двумя узлами.

  • Совокупная ссылка представляет все зависимости, которые перемещаются в одном направлении между двумя группами.

Ссылки между группами представляют собой ссылки между узлами из различных групп.

Примечание

По умолчанию граф показывает ссылки между группами только для выбранных узлов.Чтобы показывать эти ссылки непрерывно, на панели инструментов графа щелкните раскрывающийся список рядом с кнопкой Изменить способ отображения ссылок на графе, затем нажмите Показать все ссылки между группами.Если панель инструментов графа не отображается, в меню Вид выберите Панели инструментов, а затем щелкните Направленный граф.

Воспользуйтесь следующими задачами для изучения требуемых зависимостей:

Целевой тип

Выполните следующие действия

Просмотреть список зависимостей, представляемых ссылкой

  • Наведите указатель на ссылку, чтобы увидеть подсказку со списком зависимостей.

Найти узел по имени

Используется для поиска сгруппированных узлов на нескольких уровнях.

  • Нажмите клавишу CTRL+F.

Найти источник или цель ссылки

Метод используется при наличии большого количества ссылок, чтобы легко увидеть источник или цель конкретной ссылки.

  1. На панели инструментов графа измените слой графа на древовидную структуру слоя или структуру слоя в виде быстрых кластеров.

    ПримечаниеПримечание
    Если панель инструментов графа не отображается, в меню Вид выберите Панели инструментов, а затем щелкните Направленный граф.

    Дополнительные сведения см. в разделе Практическое руководство. Обзор документов с графами и навигация по этим документам.

  2. Наведите указатель на ссылку.

    Visual Studio отображает две кнопки со стрелками над ссылкой. Visual Studio также покажет подсказку, идентифицирующую источник и цель ссылки.

  3. Нажмите кнопку со стрелкой, указывающей направление, которому необходимо следовать.

    В зависимости от выбранного направления отображается источник или цель.

Изучите зависимости между узлами в различных группах

  1. Разверните требуемые группы, чтобы видеть все дочерние элементы.

  2. Выберите все нужные узлы, включая их дочерние элементы.

    Для выделения узлов в группе, нажмите и удерживайте левую кнопку мыши, чтобы выделить группу прямоугольником. Чтобы выбрать все узлы в графе, нажмите CTRL+A.

    Граф показывает ссылки между группами для выбранных узлов.

    ПримечаниеПримечание
    Чтобы показывать ссылки между группами непрерывно, на панели инструментов графа щелкните раскрывающийся список рядом с кнопкой Изменить способ отображения ссылок в графе, затем нажмите Показать все ссылки между группами.Если панель инструментов графа не отображается, в меню Вид выберите Панели инструментов, а затем щелкните Направленный граф.

Исследование зависимостей совокупных ссылок

ПримечаниеПримечание
Это возможно только если каждый элемент ссылки соединен со сборкой.Если информация о сборке отсутствует, граф создать невозможно.
  1. На панели инструментов графа измените слой графа на древовидную структуру слоя или структуру слоя в виде быстрых кластеров.

    ПримечаниеПримечание
    Если панель инструментов графа не отображается, в меню Вид выберите Панели инструментов, а затем щелкните Направленный граф.Дополнительные сведения см. в разделе Практическое руководство. Обзор документов с графами и навигация по этим документам.
  2. Дважды щелкните нужную совокупную ссылку.

    — или —

    1. Наведите указатель на ссылку.

      Visual Studio отображает две кнопки со стрелками над ссылкой.

    2. Щелкните символ плюс (+) между двумя кнопками со стрелками.

  3. В диалоговом окне Сформировать граф зависимостей щелкните уровни узлов, которые следует включить в граф.

    Например, чтобы исследовать зависимости от уровня сборки на всем протяжении до уровня метода, последовательно выберите Сборки, Пространства имен, Типы и Методы. При необходимости в отображении зависимостей только между сборками и классами выберите только Сборки и Классы.

    Чтобы включить в граф содержимое метода, воспользуйтесь обозревателем архитектуры для поиска элементов и добавления их в граф. Дополнительные сведения см. в разделе Практическое руководство. Поиск кода с помощью обозревателя архитектуры.

  4. Убедитесь, что установлен флажок Показать вложение как группу, и нажмите кнопку ОК.

    Visual Studio формирует и отображает граф с уровнями выбранных узлов и их зависимости.

  5. В графе выберите нужные группы, правой кнопкой мыши выберите группу, укажите Группа, затем нажмите Развернуть.

    — или —

    Щелкните граф правой кнопкой мыши, укажите пункт Группа, и щелкните Развернуть все.

    Граф развернет группы и отобразит их дочерние элементы.

  6. Выберите все нужные узлы, включая их дочерние элементы.

    Для выделения узлов в группе, нажмите и удерживайте левую кнопку мыши, чтобы выделить группу прямоугольником. Чтобы выбрать все узлы в графе, нажмите CTRL+A.

    Граф показывает ссылки между группами для выбранных узлов.

Обнаружение проблемных областей

Воспользуйтесь графом зависимостей, чтобы определить области кода, которые можно улучшить. Граф зависимостей с правильным форматом покажет минимальное количество зависимостей. В частности, можно выполнить следующие действия.

  • Определите код, содержащий циклы или циклические зависимости.

    Исследуйте эти области, чтобы понять можно ли их упростить. Решите, возможно ли прервать эти циклы.

  • Определите код, содержащий слишком много зависимостей.

    Исследуйте эти области, чтобы понять не выполняют ли они слишком много функций, или определите влияние изменения этих областей. Чтобы облегчить обслуживание, изменение, тестирование и повторное использование кода, подумайте о рефакторинге этих областей для их более четкого определения или о слиянии кода, выполняющего одинаковые функции.

  • Определите код, который не содержит зависимости.

    Исследуйте эти области, чтобы решить нужны ли они или этот код можно удалить.

Чтобы выполнить эти шаги можно воспользоваться специальными анализаторами. Эти анализаторы продолжают работу после их применения. При изменении графа, все применяемые анализаторы автоматически возобновят обработку обновленного графа. Чтобы остановить работу анализатора, щелкните правой кнопкой мыши поле анализатора Условные обозначения, а затем нажмите Удалить.

Примечание

Если граф очень большой, запуск анализатора может привести к исключению нехватки памяти.В таком случае отредактируйте граф, чтобы уменьшить область его действия, или создайте меньший граф, затем запустите анализатор.

Обнаружение проблемных областей кода

  1. Убедитесь, что слой графа задан как дерево или быстрые кластеры.

    Дополнительные сведения см. в разделе Практическое руководство. Обзор документов с графами и навигация по этим документам.

  2. Щелкните граф правой кнопкой мыши, укажите пункт Анализаторы, и выберите одно из следующего:

    Анализатор

    Для определения узлов, которые

    Циклические ссылки

    Содержат циклические зависимости друг от друга

    ПримечаниеПримечание
    Циклические зависимости, находящиеся внутри группы Универсальные шаблоны, не отображаются в графе при разворачивании группы.

    Поиск концентраторов

    Находящихся в первых 25% в высокой степени взаимосвязанных узлов

    Чтобы выбрать в графе эти узлы и спрятать все остальные

    1. Щелкните граф правой кнопкой мыши и выберите Показать Расширенный выбор.

    2. В поле Выбор разверните Свойства, а затем Концентратор.

    3. Установите для Концентратора значение True.

      Находящиеся в первых 25% наиболее взаимосвязанных узлов, будут выбраны.

    4. Щелкните граф правой кнопкой мыши, укажите пункт Выбор, и щелкните Спрятать не выбранные.

      Все не выбранные узлы графа будут спрятаны, и анализаторы определят новые узлы как концентраторы.

    Также можно определить сжатые области зависимостей посредством переключения структуры графа зависимостей на матричное представление. Дополнительные сведения о матричном представлении зависимостей см. в разделе Практическое руководство. Обзор документов с графами и навигация по этим документам.

    Узлы без ссылок

    На них не ссылаются другие узлы.

    Предупреждающее замечаниеВнимание
    Проверьте каждый такой случай перед принятием решения о том, что код не используется.Определенные зависимости, такие как зависимости XAML и зависимости времени выполнения, нельзя найти в коде статически.

См. также

Основные понятия

Практическое руководство. Создание графов зависимостей для кода .NET

Другие ресурсы

Практическое руководство. Обзор документов с графами и навигация по этим документам

Практическое руководство. Изменение или настройка документов с графами