Практическое руководство. Изучение кода с помощью графов зависимостей
В Visual Studio Ultimate воспользуйтесь графами зависимостей для получения информации об организации и связях в имеющемся коде. Эти графы представляют структуры, в качестве узлов и связи, в качестве ссылок, которые отображаются как стрелки между узлами. Чтобы сформировать граф см. Практическое руководство. Создание графов зависимостей для кода .NET.
В следующем примере показано представление структур и связей с помощью графов в виде узлов и ссылок:
Узлы и ссылки в графе
В следующем примере показано представление структур и связей содержания с помощью графов в виде групп:
Сгруппированные узлы в графе
Предупреждение
Граф показывает только успешно построенные зависимости для кода.Компоненты и их содержимое, не будут отображены при возникновении ошибки построения для этих компонентов.Убедитесь, что компонент действительно построен и имеет зависимости перед принятием решений по архитектуре на основании графа.
В этом разделе
Исследование зависимостей в графе
Обнаружение проблемных областей
Исследование зависимостей в графе
Зависимости в графе представлены следующими типами ссылок:
Отдельная ссылка представляет единичную зависимость между двумя узлами.
Совокупная ссылка представляет все зависимости, которые перемещаются в одном направлении между двумя группами.
Ссылки между группами представляют собой ссылки между узлами из различных групп.
Примечание
По умолчанию граф показывает ссылки между группами только для выбранных узлов.Чтобы показывать эти ссылки непрерывно, на панели инструментов графа щелкните раскрывающийся список рядом с кнопкой Изменить способ отображения ссылок на графе, затем нажмите Показать все ссылки между группами.Если панель инструментов графа не отображается, в меню Вид выберите Панели инструментов, а затем щелкните Направленный граф.
Воспользуйтесь следующими задачами для изучения требуемых зависимостей:
Целевой тип |
Выполните следующие действия |
---|---|
Просмотреть список зависимостей, представляемых ссылкой |
|
Найти узел по имени Используется для поиска сгруппированных узлов на нескольких уровнях. |
|
Найти источник или цель ссылки Метод используется при наличии большого количества ссылок, чтобы легко увидеть источник или цель конкретной ссылки. |
|
Изучите зависимости между узлами в различных группах |
|
Исследование зависимостей совокупных ссылок ![]()
Это возможно только если каждый элемент ссылки соединен со сборкой.Если информация о сборке отсутствует, граф создать невозможно.
|
|
Обнаружение проблемных областей
Воспользуйтесь графом зависимостей, чтобы определить области кода, которые можно улучшить. Граф зависимостей с правильным форматом покажет минимальное количество зависимостей. В частности, можно выполнить следующие действия.
Определите код, содержащий циклы или циклические зависимости.
Исследуйте эти области, чтобы понять можно ли их упростить. Решите, возможно ли прервать эти циклы.
Определите код, содержащий слишком много зависимостей.
Исследуйте эти области, чтобы понять не выполняют ли они слишком много функций, или определите влияние изменения этих областей. Чтобы облегчить обслуживание, изменение, тестирование и повторное использование кода, подумайте о рефакторинге этих областей для их более четкого определения или о слиянии кода, выполняющего одинаковые функции.
Определите код, который не содержит зависимости.
Исследуйте эти области, чтобы решить нужны ли они или этот код можно удалить.
Чтобы выполнить эти шаги можно воспользоваться специальными анализаторами. Эти анализаторы продолжают работу после их применения. При изменении графа, все применяемые анализаторы автоматически возобновят обработку обновленного графа. Чтобы остановить работу анализатора, щелкните правой кнопкой мыши поле анализатора Условные обозначения, а затем нажмите Удалить.
Примечание
Если граф очень большой, запуск анализатора может привести к исключению нехватки памяти.В таком случае отредактируйте граф, чтобы уменьшить область его действия, или создайте меньший граф, затем запустите анализатор.
Обнаружение проблемных областей кода
Убедитесь, что слой графа задан как дерево или быстрые кластеры.
Дополнительные сведения см. в разделе Практическое руководство. Обзор документов с графами и навигация по этим документам.
Щелкните граф правой кнопкой мыши, укажите пункт Анализаторы, и выберите одно из следующего:
Анализатор
Для определения узлов, которые
Циклические ссылки
Содержат циклические зависимости друг от друга
Примечание
Циклические зависимости, находящиеся внутри группы Универсальные шаблоны, не отображаются в графе при разворачивании группы.Поиск концентраторов
Находящихся в первых 25% в высокой степени взаимосвязанных узлов
Чтобы выбрать в графе эти узлы и спрятать все остальные
Щелкните граф правой кнопкой мыши и выберите Показать Расширенный выбор.
В поле Выбор разверните Свойства, а затем Концентратор.
Установите для Концентратора значение True.
Находящиеся в первых 25% наиболее взаимосвязанных узлов, будут выбраны.
Щелкните граф правой кнопкой мыши, укажите пункт Выбор, и щелкните Спрятать не выбранные.
Все не выбранные узлы графа будут спрятаны, и анализаторы определят новые узлы как концентраторы.
Также можно определить сжатые области зависимостей посредством переключения структуры графа зависимостей на матричное представление. Дополнительные сведения о матричном представлении зависимостей см. в разделе Практическое руководство. Обзор документов с графами и навигация по этим документам.
Узлы без ссылок
На них не ссылаются другие узлы.
Внимание
Проверьте каждый такой случай перед принятием решения о том, что код не используется.Определенные зависимости, такие как зависимости XAML и зависимости времени выполнения, нельзя найти в коде статически.
См. также
Основные понятия
Практическое руководство. Создание графов зависимостей для кода .NET
Другие ресурсы
Практическое руководство. Обзор документов с графами и навигация по этим документам
Практическое руководство. Изменение или настройка документов с графами