Что представляет собой карта кода Visual Studio 2012?
Что такое карта кода?
В пакет обновления Visual Studio 2012 Update 1, который вышел в ноябре 2012 года, была включена новая функция под названием Code Map (Карта кода), она доступна пользователям версии Ultimate edition. Эта функция позволяет визуализировать взаимосвязи в коде. В основе карты кода лежит концепция, понять которую вам поможет этот короткий видеоролик.
Начиная с версии, включенной в пакет обновления Visual Studio 2012 Update 2, функция Code Map включает расширенные возможности, теперь взаимосвязи в коде можно визуализировать в ходе отладки. Ниже представлен код для Windows Phone — при нажатии кнопки веб-службе отправляется запрос на получение данных о численности населения Пакистана. После получения результата на экран выводится подтверждающее сообщение для пользователя. Однако в ходе тестирования мы обнаружили, что сообщение с подтверждением выводится до фактического получения ответа на запрос, поэтому мы приступаем к отладке кода с использованием инструмента Code Map.
Карта кода: инструкция по применению?
Сейчас мы познакомимся с функцией отладки инструмента Code Map (Карта кода). Создайте точку останова для обработчика нажатия кнопки. Как только точка останова сработает, перейдите в окно карты кода, выполнив одно из следующих действий:
- Нажмите кнопку Code Map (Карта кода) на панели инструментов.
- Выберите пункт Show Call Stack on Code Map (Показать стек вызовов на карте кода) из меню Debug (Отладка).
- Нажмите Ctrl + Shift +`.
На экране вы увидите примерно следующее:
Красная рамка означает, что для этого узла в данный момент выполняется отладка. Давайте проанализируем первый метод. Нажав F11, вы можете вывести на экран содержимое метода DataRetrieved(), в окне Code Map будет показано текущее состояние отладки, для соответствующего метода будет создан новый узел. Обратите внимание, что узел для DataRetrieved () в данный момент выделен желтым маркером. Это позволяет вам отслеживать свои стеки вызовов и взаимосвязь методов.
Code Map предоставляет широкие возможности для отладки, например, нажав Summary (элемент TextBlock) внутри метода и выбрав Find All References on Code Map (Найти все ссылки на карте кода), вы можете вывести на экран все элементы, на которые ссылается это поле. Например, вы без лишних усилий можете определить, какие методы в коде работают с конкретным полем; это очень удобно, особенно для сложных сценариев отладки.
Можно продолжить отладку и перейти к следующему методу обработчика нажатия на кнопку — RequestPopulation(). Если вы пропустите этот метод, нажав F10, то на карте кода он не появится. Это предотвращает загромождение карты кода, на ней будут только те элементы, которые вас интересуют.
Давайте перейдем к последнему методу в этом вызове — ShowConfirmationMesssage(). Узел для этого метода станет активным, а узел для DataRequest() поменяет цвет на серый, это означает, что узел больше не является активным в контексте отладки.
Наконец, если мы откроем этот метод, вернемся к обработчику нажатия кнопки Button 1 и продолжим отладку путем нажатия F10, то мы перейдем к событию DownloadStringCompleted, которое представляет собой асинхронный вызов из метода RequestPopulation(). Обратите внимание, что на карте кода это ветвь от узла External Code (Внешний код), поскольку вызов перехватывается библиотеками классов ядра (класс System.Net.WebClient) в Windows Phone.
Наведите указатель мыши на событие wc_DownloadStringcompleted(), и вы увидите соответствующую подпись кода в подсказке.
Функции анализа кода в Code Map
Наконец, мы обнаружили проблему в коде. Вызов веб-службы является асинхронным, поэтому приложение не будет ждать ответа и сразу покажет сообщение с подтверждением. Эту информацию мы должны передать нашему разработчику. Инструмент Code Map, в частности, помогает анализировать код. Щелкните правой кнопкой событие wc_DownloadStringCompleted и выберите Add Comment (Добавить комментарий).
После добавления комментария вы можете просто переместиться наверх и выбрать подходящий метод для предоставления общего доступа.
Также доступны другие полезные функции, например функция Flag for Follow Up (Отметка к дальнейшим действиям) позволяет выбрать цвет и выделить фрагмент кода, который требует вашего внимания, но не в рамках текущего сеанса отладки.
Анализ указателей
Для удобства читателя приводится краткий обзор указателей, аналоги которых присутствуют на карте кода.