Инструменты разработчика: OzCode

Привет. Сегодня я хочу рассказать об одном расширении для Visual Studio, которое может значительно облегчить процесс отладки. Сам я пользуюсь данным расширением уже больше трёх месяцев и считаю, что оно заслуживает внимания. Я сделал небольшой видео-обзор возможностей. Надеюсь, вам понравится.

 

 

Называется расширение «OzCode». Сразу хочу сказать, что некоторый из показанного функционала, которым обладает OzCode будет добавлен в Visual Studio 2019, но, во-первых, не весь, а во-вторых, переход на новые версии Visual Studio так же не всегда идёт так быстро, как хотелось бы, так что информация всё еще актуальна. А если проект и дальше будет развиваться, то актуальность не утратит.

LINQ

Первое, о чем хотелось бы рассказать, это возможности отладки LINQ выражений. У нас есть список чисел, над которыми мы делаем некоторую выборку и преобразование. Давайте посмотрим, как происходит процесс отладки без использования OzCode. Ставим точку останова, запускаем программу. Что мы можем делать? Мы можем просмотреть какие элементы содержаться в нашем списке и выполнив вычисления увидеть, какие числа попали в итоговую выборку. Если вы задаётесь вопросом «И что же здесь не так?», то представьте, что здесь не 3 выборки и преобразование, а, например 30-50 и в одном из них ошибка, так как итоговый результат не тот, что мы ожидаем. В таком случае поиск ошибки станет настоящей головной болью и, вероятно, займёт не мало времени.

Давайте посмотрим, как процесс отладки LINQ выражений будет выглядеть с использованием OzCode: мы всё так же можем просматривать список элементов, но дополнительно можем искать нужные нам значения, о поиске я расскажу подробнее немного позже. Так же еще до выполнения LINQ выражения, мы можем видеть количество элементов, оставшихся на каждом шаге. Если же мы нажмём «LINQ Analysis», то откроется окно, в котором мы сможем подробно рассмотреть каждый из шагов LINQ выражения, наглядно понять какие элементы были отсеяны, а какие были отобраны и в каком виде.

Рассмотрим еще один пример: есть строка текста и есть LINQ выражение, которое определяет наиболее часто встречаемое слово в тексте. Без использования OzCode мы можем получить итоговое значение данного выражения, но до конца не ясно, почему оно отработало именно так. Там более что у нас может быть очень большая строка, в отличие от представленной тестовой.

Если мы включим OzCode, запустим программу и откроем анализатор LINQ выражений, тогда мы наглядно сможем увидеть на каких шагах и как работало наше выражение. Например, мы сразу можем увидеть, что в “BUGS)” содержится символ закрывающейся скобки, что неверно. Без остановки программы мы можем это поправить, добавив символы скобок в SPLIT-функцию. После этого шаги вычисления LINQ в OzCode будут обновлены, и мы сможем увидеть новый результат, так же наглядно демонстрирующий на каком шаге с какими данными приходилось работать.

Отображение значимых элементов

Если мы используем какие-то сложные объекты, в который большое количество полей, а при дебаге нам нужно обращать внимание только на несколько определённых, то в таком случае, например, можно использовать атрибут DebuggerDisplay, который позволяет выводить значимую для нас информацию об объекте. Но при использовании OzCode это становится значительно проще. Всё что необходимо, это выбрать значимые для нас поля и нажать на символ звёздочки рядом с ними. После этого элемент поднимется в верх списка элементов, а информация об объекте в первую очередь будет содержать выбранные поля. Это работает и для вложенных элементов. Например, мы можем выводить информацию о городе из адреса.

Поиск

Также давайте посмотрим, как работает поиск. В поле для поиска введём «york» и выполним поиск. Мы ожидаем, что нам найдёт все объекты, у которых задано это значение. При первом поиске ничего не нашло, так как у его была ограничена максимальная глубина поиска, нажмём «Search deeper» и увидим, что интересующие нас элементы были найдены и мы можем продолжать их анализировать. Использование поиска может значительно ускорить процесс поиска нужного для анализа элемента.

Условное прерывание

Средства Visual Studio отлично умеют добавлять условные прерывания со сложными выражениями. OzCode помогает быстро выбрать необходимые для обработки поля и добавить их в выражения. Всё что необходимо, это выбрать нужное поле и нажать «Add conditional Breakpoint», после чего мы увидим созданное выражение, и наша точка останова будет срабатывать при его истинности. Дополнительные элементы в выражения мы можем добавлять аналогичным образом.

Экспорт

Бывают ситуации, когда нам необходимо экспортировать какие-то данные для анализа. С этой задачей OzCode справляется как нельзя лучше. Для экспорта необходимого элемента необходимо выбрать его и нажать «Export». При экспорте среди доступных форматов можно выбирать между C# кодом, JSON и XML. Также можно задавать глубину сериализации объекта. Полученные данные можно скопировать в буфер или сохранить в файл.

Сравнение

Еще одним из важных возможностей OzCode можно назвать сравнение объектов и отображение найденных отличий в удобном виде. Чтобы сравнить два объекта, необходимо выбрать один, нажать на “Compare” и выбрать второй элемент для сравнения. После этого мы можем увидеть все отличия. Если отличия не были найдены, мы можем нажать «Search deeper» и будет произведён более глубокий поиск. В найденных данных мы видим все найденные различия двух объектов, и мы можем быть уверены, что мы не упустили что-то при анализе.

Предсказание будущего

Когда я показывал работу с LINQ, вы могли заметить, что OzCode просчитывает результат до того, как само выражение выполняется в программе. Подобное «предсказание будущего» здорово облегчает отладку, так как мы знаем как отработает следующих шаг до его непосредственного выполнения, тем самым мы можем заранее внести нужным правки. В показываемом примере вы так же можете видеть, как работает предсказание, заранее давая нам понять, как будет работать то или иное выражение.

Работа с исключениями

Так же, при использовании OzCode гораздо удобнее обрабатывать исключения. Мы можем быстро узнать откуда было выброшено исключение, какие исключения возникали, сообщения об ошибках, а также можем быстро найти соответствующую проблему в наиболее популярных поисковиках, MSDN или StackOverflow.

Включение/отключение OzCode.

Если возникает необходимость, мы легко можем отключить данное расширения, выбрав в меню OzCode – Options – Features – Enable OzCode. Здесь же можно менять другие настройки расширения, если они не устраивают по каким-то причинам.

 

Дополнительную информации об OzCode вы можете получить на официальном сайте oz-code.com. Помимо документации есть множество обучающих видео и примеров использования. В настоящее время расширение доступно для Visual Studio 12,13,15 и 2017. Также OzCode имеет 28 дней бесплатного тестового использования, так что вы без спешки сможете понять, какие преимущества OzCode могут быть полезны для вас.

https://www.oz-code.com
https://github.com/oz-code

---
Приятного программирования.

Добавить комментарий