Работа с кодом в Visual Studio
Visual Studio включает мощный интегрированный набор средств сборки и отладки проекта. В этой статье описывается, как Visual Studio поможет найти проблемы в коде с помощью выходных данных сборки, анализа кода, средств отладки и модульных тестов.
Мы разобрались, как работать с редактором, и написали код. Теперь необходимо убедиться, что код работает должным образом. Отладка в Visual Studio, как и в большинстве интегрированных сред разработки (IDE), осуществляется в два этапа: построение кода для обнаружения и устранения ошибок проекта и компилятора и выполнение кода для обнаружения ошибок времени выполнения и динамических ошибок.
Сборка кода
Существует два основных типа конфигурации сборки: отладка и выпуск. При использовании конфигурации отладка создается более крупный и медленный исполняемый файл, обеспечивающий более широкие интерактивные возможности отладки во время выполнения. Исполняемый файл конфигурации отладка никогда не следует отправлять. Конфигурация выпуск позволяет создать более быстрый оптимизированный исполняемый файл, подходящий для отправки (по крайней мере с точки зрения компилятора). По умолчанию используется конфигурация Отладка.
Самый простой способ выполнить сборку проекта — нажать клавишу F7, однако вы также можете начать сборку, выбрав в главном меню пункты Сборка>Собрать решение.
Процесс сборки можно наблюдать в окне вывода в нижней части пользовательского интерфейса Visual Studio (пользовательский интерфейс). Здесь отображаются ошибки, предупреждения и операции сборки. При наличии ошибок (или предупреждений выше заданного уровня) сборка завершится ошибкой. Вы можете выбрать ошибки и предупреждения, чтобы перейти к строке, в которой они произошли. Для перестроения проекта можно нажать клавишу F7 (чтобы перекомпилировать только файлы с ошибками) или CTRL+ALT+F7 (для чистого полного перестроения).
В окне результатов содержатся два окна с вкладками под областью редактора: окно Вывод, в котором содержатся необработанные выходные данные компилятора (включая сообщения об ошибках), и окно Список ошибок, содержащее список всех ошибок и предупреждений, к которому можно применить сортировку и фильтры.
После успешного выполнения построения вы увидите примерно следующие результаты в окне Вывод:
Просмотр списка ошибок
Если вы не внесли никаких изменений в код, который вы ранее и успешно скомпилировали, вероятно, возникла ошибка. Если вы новичок в написании кода, возможно, их будет много. Иногда ошибки очевидны, такие как простая синтаксическая ошибка или неправильное имя переменной, а иногда их трудно понять, с помощью только криптографического кода, который поможет вам. Для более чистого представления проблем перейдите в нижней части окна вывода сборки и перейдите на вкладку "Список ошибок". Это действие делает вас более упорядоченным представлением об ошибках и предупреждениях для проекта, а также предоставляет дополнительные параметры.
Выберите строку ошибки в окне списка ошибок, чтобы перейти к строке ошибки. (Или включите номера строк, нажав клавишу Ctrl+Q, ввод номеров строк и включение или отключение номеров строк. Это самый быстрый способ добраться до диалогового окна "Параметры ", где можно включить номера строк.)
Нажмите клавиши CTRL+G для быстрого перехода к номеру строки, в которой возникла ошибка.
Visual Studio идентифицирует эту ошибку с красным символом подчеркивания .Squiggle. Наведите указатель мыши на него для получения дополнительных сведений. Сделайте исправление и исчезнете, хотя вы можете ввести новую ошибку с исправлением. (Это действие называется регрессией.)
Пройдите список ошибок и устраните все ошибки в коде.
Просмотр подробных сведений об ошибках
Многие ошибки могут не понять вас, фразы, как они находятся в терминах компилятора. В таких случаях может потребоваться дополнительная информация. В окне списка ошибок можно выполнить автоматический поиск Bing для получения дополнительных сведений об ошибке или предупреждении. Щелкните правой кнопкой мыши соответствующую строку входа и выберите команду "Показать справку об ошибке" в контекстном меню или выберите значение кода гиперссылки в столбце "Код" списка ошибок.
В зависимости от настроек результаты поиска по коду и описанию ошибки откроются в веб-браузере либо во вкладке Visual Studio с результатами поиска Bing. Результаты из многих различных источников в Интернете, и вы можете не найти все, чтобы быть полезным.
Анализ кода
Средства анализа выполняют поиск общих проблем в коде, которые могут привести к ошибкам времени выполнения или проблемам управления кодом.
Анализ кода C# и Visual Basic
Visual Studio содержит встроенный набор анализаторов платформы компиляторов .NET, которые проверяют код на C# и Visual Basic при его наборе. Вы можете установить дополнительные анализаторы в виде расширения Visual Studio или в виде пакета NuGet. При обнаружении нарушений правил они отображаются как в списке ошибок, так и в редакторе кода в виде волнистых элементов в коде обиженного кода.
Анализ кода C++
Чтобы выполнить анализ кода C++, запустите статический анализ кода. Получите в привычке запустить его после очистки очевидных ошибок, которые препятствуют успешной сборке, и займет некоторое время, чтобы устранить предупреждения, которые он может создать. Вы можете спасти себя некоторые головные боли вниз по дороге, и вы можете узнать несколько методов стиля кода.
Нажмите клавиши ALT+F11 (или выберите в верхнем меню команду Анализ>Выполнить анализ кода в решении) для запуска статического анализа кода.
Все новые или обновленные предупреждения отображаются на вкладке Список ошибок в нижней части интегрированной среды разработки. Выберите предупреждение, чтобы перейти к нему в коде.
Использование быстрых действий для исправления или рефакторинга кода
Быстрые действия, доступные с помощью значка лампочки или отвертки, позволяют выполнить встроенный рефакторинг кода. Это простой способ быстро и эффективно исправить распространенные предупреждения в коде C#, C++и Visual Basic. Для доступа к ним щелкните правой кнопкой мыши волнистую линию предупреждения и выберите Быстрые действия и рефакторинг. Или, когда курсор находится в строке с цветным волнистым цветом, нажмите клавиши CTRL+ или выберите лампочку, лампочку ошибки или значок отвертки в поле. Затем Visual Studio отображает список возможных исправлений или рефакторингов, которые можно применить к этой строке кода.
Быстрые действия можно использовать в любом случае, когда средство анализа кода определяет возможность исправления, рефакторинга или улучшения кода. Выберите любую строку кода, щелкните правой кнопкой мыши, чтобы открыть контекстное меню, и выберите быстрые действия и рефакторинг. Если доступны параметры рефакторинга или улучшения, они отображаются. В противном случае в левом нижнем углу интегрированной среды разработки появится сообщение Быстрые действия недоступны.
С помощью интерфейса вы можете быстро использовать клавиши со стрелками и ctrl+. Для проверка для простой рефакторинг возможностей и очистки кода!
Запуск очистки кода
В Visual Studio можно по запросу форматировать файл кода C#, в том числе параметры стиля кода, с помощью кнопки Очистка кода в нижней части редактора.
Помимо форматирования файла для пробелов, отступов и т. д. Очистка кода также применяет набор соглашений о стиле кода, которые вы определяете. Ваши настройки для каждого стиля кода считываются из файла EditorConfig, если такой существует в проекте, или из раздела Параметры стиля кода, который доступен через диалоговое окно Параметры.
Отладка выполняемого кода
Теперь, когда вы успешно создали код и выполнили немного очистки, запустите его, нажав клавишу F5 или выбрав отладку запуска отладки>. Это действие запускает приложение в среде отладки, чтобы вы могли подробно наблюдать за его поведением. Интегрированная среда разработки Visual Studio изменяется во время выполнения приложения: окно Вывод заменяется двумя новыми окнами (в конфигурации окон по умолчанию): окном с вкладками Видимые/Локальные/Контрольные значения и окном с вкладками Стек вызовов/Точки останова/Параметры исключений/Вывод. Эти окна имеют несколько вкладок, которые позволяют проверять и оценивать переменные приложения, потоки, стеки вызовов и другие поведения при выполнении.
Остановите приложение, нажав клавиши SHIFT+F5 или кнопку Остановить. Кроме того, можно просто закрыть главное окно приложения (или диалоговое окно командной строки).
Если код выполняется полностью и точно так, как ожидалось, вас можно поздравить. Однако иногда код может перестать отвечать на запросы или завершать сбои или дает некоторые странные результаты. В этом случае необходимо попытаться найти источник этих проблем и устранить ошибки.
Задание простых точек останова
Точки останова — это один из самых простых и важных компонентов надежной отладки. Точка останова указывает, где Visual Studio должна приостановить выполнение выполняемого кода, чтобы просмотреть значения переменных, или поведение памяти или выполнение ветви кода. После установки или удаления точек останова перестраивать проект не нужно.
Установите точку останова, щелкнув дальнее поле строки, в которой требуется приостановить выполнение, или нажмите клавишу F9, чтобы установить точку останова в текущей строке кода. При запуске кода он приостанавливает (или прерывает) перед выполнением инструкций для этой строки кода.
Чаще всего точки останова используются для решения следующих задач.
Чтобы точнее определить источник аварийного завершения или отсутствия отклика программы, расставьте точки останова вокруг и непосредственно в коде вызова метода, который, по вашему мнению, приводит к сбою. При выполнении кода в отладчике удаляйте, а затем снова устанавливайте точки останова ближе друг к другу, пока не найдете строку кода, вызывающую ошибку. Выполнение кода в отладчике описывается в следующем разделе.
При вводе нового кода задайте точку останова в начале и запустите код, чтобы убедиться, что он работает должным образом.
При реализации сложного поведения задайте точки останова для алгоритмического кода, чтобы можно было проверить значения переменных и данные при прерывании программы.
При написании кода C или C++ используйте точки останова для остановки кода, чтобы можно было проверить значения адреса (ищите значение NULL) и просмотреть значения счетчиков при отладке ошибок, связанных с памятью.
Дополнительные сведения об использовании точек останова см. в разделе "Использование точек останова" в отладчике Visual Studio.
Проверка кода во время выполнения
Когда выполняемый код попадает в точку останова и приостанавливается, строка кода, помеченная желтым цветом (текущая инструкция) еще не выполнена. На этом этапе может потребоваться выполнить текущую инструкцию, а затем проверить измененные значения. Для выполнения кода в отладчике можно использовать ряд команд пошагового выполнения. Если отмеченный код является вызовом метода, вы можете выполнить шаг с заходом, нажав клавишу F11. Кроме того, можно выполнить шаг с обходом строки кода, нажав клавишу F10. Дополнительные команды и сведения о пошаговом переходе по коду см. в статье "Навигация по коду" с помощью отладчика.
На приведенном выше рисунке можно продвинуть отладчик один оператор, нажав клавишу F10 или F11 (так как здесь нет вызова метода, обе команды имеют одинаковый результат).
Когда отладчик приостанавливает выполнение, можно проверить переменные и стеки вызовов, чтобы разобраться в происходящем. Находятся ли значения в тех диапазонах, которые вы ожидали увидеть? Выполняются ли вызовы в правильном порядке?
Наведите курсор на переменную для просмотра ее текущего значения и ссылок. Если отображается значение, которое вы не ожидали увидеть, возможно, в предыдущем или вызывающем коде имеется ошибка. Дополнительные сведения см. в статье "Первый просмотр отладчика Visual Studio".
Кроме того, Visual Studio выводит на экран окно средств диагностики, где можно наблюдать за загрузкой ЦП и использованием памяти приложением в динамике по времени. В дальнейшем в процессе разработки приложения эти средства можно применять для выявления случаев непредвиденно высокой загрузки ЦП или чрезмерного выделения памяти. Используйте его с окном "Контроль " и точками останова, чтобы определить, что вызывает непредвиденные тяжелые ресурсы или нераспоставленные ресурсы. Дополнительные сведения см. в статье "Первый взгляд на средства профилирования" (C#, Visual Basic, C++, F#).
Выполнение модульных тестов
Модульные тесты — это первая линия защиты от ошибок в коде, так как при правильном проведении они позволяют проверять отдельные "модули" кода (как правило, это отдельные функции), которые проще отлаживать, чем всю программу. Visual Studio устанавливает платформу модульного тестирования Майкрософт для управляемого и машинного кода. Платформа модульного тестирования используется для создания модульных тестов, их запуска и передачи результатов таких тестов. Завершив внесение изменений, запустите модульные тесты повторно, чтобы убедиться, что код по-прежнему работает правильно. При использовании выпуска Visual Studio Enterprise можно настроить автоматический запуск тестов после каждой сборки.
Чтобы приступить к работе, ознакомьтесь с разделом "Создание модульных тестов для нечеткого тестирования с помощью IntelliTest".
Дополнительные сведения о модульных тестах в Visual Studio, а также о том, как они могут помочь в создании более качественного кода, см. в статье Основные сведения о модульных тестах.