Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль
Добавить софт
Мой софт

Visual Assist X - помощник разработчика

Автор: Виктор Деревянко
Опубликовано: 25.09.2008
Источник: SoftKey.info

Начиная с Microsoft Visual C/C++ 6.0, все среды разработки (IDE) фирмы Microsoft поддерживают технологию IntelliSense. В процессе редактирования кода пользователем, специальный легковесный синтаксический анализатор (парсер) занимается разбором кода программы и собирает информацию о ее структуре. Накопленная информация используется для того, чтобы помочь пользователю при чтении кода и кодировании. Подсветка синтаксиса кода, возможность автозавершения имен при кодировании, всплывающие подсказки с информацией о параметрах функций, средства рефакторинга кода - все это основано на IntelliSense. И все это позволяет разработчикам здорово экономить время в процессе работы над кодом.

Поддержка технологии IntelliSense в средах разработки Microsoft имеет давнюю историю. Первые возможности IntelliSense - автозавершение имен и вывод информации о параметрах функции, - появились в Visual C++ 6.0. В VS2002 IntelliSense стала поддерживать несколько языков программирования, включая C++, Managed C++, C#, J#, VB.NET. В VS2003 появились средства быстрого ввода шаблонов кода и возможность автоматической коррекции ошибок. В VS2005 были добавлены инструменты рефакторинга и поддержка синтаксиса C++/CLI. IntelliSense перестала использовать какие-либо заранее подготовленные базы данных символов - все данные стали собираться в процессе кодирования. Ее работа стала намного точнее, но существенно медленнее. В VS2008 IntelliSense стала поддерживать JScript, ASP.NET AJAX, появилась возможность делать всплывающее окно IntelliSense прозрачным, добавился функционал по управлению директивами using в C#.

Меню Visual Assist
Меню Visual Assist
С течением времени все больше возможностей IDE базируется на информации, полученной через IntelliSense. К сожалению, текущая техническая реализация IntelliSense не идеальна - существует множество проблем как со скоростью работы, так и с точностью результатов. Одной из основных причин является устаревшая архитектура хранения данных IntelliSense, которую разработчики собираются полностью переработать в следующей версии Microsoft Visual Studio 10. А пока, когда очередной пользователь жалуется на форумах на те или иные недостатки IntelliSense, ему, как правило, советуют одно - "поставь Visual Assist и не мучайся".

Visual Assist X - это плагин для Microsoft Visual Studio, разработанный компанией Whole Tomato Software, Inc. и предоставляющий собственную реализацию функции IntelliSense. Он устраняет ряд недостатков, характерных для встроенной функции IntelliSense, и добавляет в среду разработки множество новых возможностей. Плагин поддерживает три языка программирования - C++ (включая варианты синтаксиса Managed C++ и C++/CLI), C# и Visual Basic и способен работать с большинством версий Microsoft Visual Studio, начиная от VC6 и заканчивая VS2008.

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

Текущая версия Visual Assist (10.4.1647.0) предлагает около 50 различных функций, направленных на то, чтобы помочь разработчикам в написании нового кода, чтении и редактировании существующего, а так же обеспечить возможность удобной навигации по коду. Часть функций - абсолютно новые, другие - повторяют и улучшают реализацию аналогичных функций IDE. Большинство функций доступно через главное и контекстное меню IDE, однако многие функции не нужно вызывать специально - они срабатывают в нужный момент автоматически.

Подсветка синтаксиса

Visual Assist изменяет подсветку синтаксиса. Она становится гораздо более информативной, за счет того, что названия классов, макросов, методов и переменных выделены разными цветами. Дополнительно Visual Assist может визуально выделять локальные переменные в функциях и все символы, объявленные в сторонних библиотеках, используемых в проекте.

Подсветка синтаксисв в VA
Подсветка синтаксиса кода на С++ после установки Visual Assist
Очень полезной на практике возможностью является подсветка открывающей и закрывающей скобок того программного блока, в котором находится курсор. С ее помощью потерянные в коде скобочки находятся практически мгновенно.

Автотекст и автозавершение имен

Список вариантов с фильтрами
Список подходящих вариантов содержит панель инструментов для фильтрации
Функция автозавершения имен, реализуемая IntelliSense, работает следующим образом. Программист начинает набирать имя и нажимает Ctrl+Space. Среда разработки отображает список подходящих вариантов завершения набираемого имени. Программист может продолжить набирать имя - при этом список подходящих вариантов будет уменьшаться, - либо сразу выбрать один из вариантов, и система автоматически завершит ввод имени. В современных реализациях IntelliSense нажимать Ctrl+Space, зачастую, даже не требуется - список вариантов показывается автоматически прямо в процессе набора кода.

В Visual Assist возможности функции автозавершения имен серьезно расширенны. Список вариантов поддерживает улучшенную подсветку синтаксиса. Его можно фильтровать - по типам вариантов, по области видимости идентификаторов, - и делать прозрачным, путем нажатия клавиши Ctrl.

Шаблонов кода в списке вариантов
Шаблоны кода в списке вариантов
Список вариантов отображается двумя способами. В процессе набора кода Visual Assist оперативно показывает короткий список с несколькими наиболее подходящими вариантами. При нажатии Ctrl+Space короткий список заменяется полным, содержащим полный набор возможных вариантов.

Visual Assist находит частично введенное имя
Поиск вариантов по части имени
Список вариантов Visual Assist может содержать не только имена, считанные из кода программы, но и варианты шаблонов кода (snippets). Например, достаточно набрать в коде "forr" и Visual Assist предложит ввести один из шаблонов реализации цикла. Подобные клавиатурные сокращения есть для множества языковых конструкций - while, do, switch, catch, try и т.д., типов данных (например, за сокращением UI скрываются варианты UINT, UINT32, UINT64, UINT_PTR), директив препроцессора (#if, #im, #in и т.п.) и даже функций ("Dialog procedure", "Window procedure"). Любой разработчик может создать собственные шаблоны кода и присвоить им удобные клавиатурные сокращения.

Алгоритм поиска подходящих вариантов в Visual Assist устроен так, что программисту достаточно ввести минимум информации для того, чтобы Visual Assist смог "догадаться", что именно вводит пользователь. Вводить первые буквы названия имени вовсе не обязательно, с таким же успехом можно ввести просто часть строки, содержащейся в имени - Visual Assist "поймет".

Visual Assist поддерживает ввод имен через аббревиатуры. Например, для того чтобы ввести имя функции GetTextManager достаточно набрать "gtm", для набора DateTimeKind - "dt" или "dtk" и т.п.

Visual Assist способен здорово помочь в наборе повторяющегося кода. Если в настройках включить функцию "Include bits of code in surrounding lines", то Visual Assist начнет предлагать в списке подходящих вариантов код, который набирался в аналогичном случае в предыдущих строчках.

Visual Assist угадывает вводимый код по ранее введенному
Угадывание вводимого кода по окружающему коду

Навигация по коду редактируемого файла.

Visual Assist добавляет панель "VA outline", отображающую структуру кода текущего редактируемого документа в компактном виде. Чтобы перейти к требуемой функции в редакторе, достаточно дважды щелкнуть по ее названию на панели. Если на панели навести на название функции курсор мыши, то Visual Assist отобразит всплывающую подсказку с текстом функции - разумеется, с подсветкой синтаксиса.

VA outline + find references
Панель "VA outline" и пример результатов работы функции "Find references"
Фактически, "VA outline" позволяет разработчику держать перед глазами структуру программы и, дополнительно, ускоряет процесс выполнения ряда операций по редактировании структуры кода. Например, если вам необходимо заключить пару функций в блок "region/endregion", то достаточно выделить названия этих функций на панели и дать команду "Surround with..". Если вам нужно изменить порядок размещения функций в исходном файле, то вы можете сделать это на панели "VA outline" с помощью технологии "Drag and Drop".

Помимо панели "VA outline", для навигации по коду редактируемого файла можно использовать функцию "список методов в файле". "VA outline" показывает структуру в древовидном виде, что гораздо удобнее, чем список. Зато список методов доступен всегда (достаточно нажать Alt+M), а на панель "VA outline" нужно переключаться.

Навигация по коду проекта

Visual Assist позволяет выбрать в редактируемом файле любое идентификатор и выполнить для него ряд операций. Операция "Goto" позволяет перейти к определению или объявлению выбранного идентификатора. "Find previous/next by context" - перейти к предыдущему/следующему вхождению этого идентификатора в тексте программы.

"Find references" и "find references in file" - позволяют найти все ссылки на этот идентификтор в коде проекта или в коде редактируемого файла.

Функция "Find references" - это альтернативная реализация стандартной функции "Find all references". Работает она на порядок быстрее, точнее и показывает результаты в более удобном виде - с подсветкой синтаксиса и всплывающей подсказкой с текстом кода программы.

VA View + find symbols
Панель "VA outline" и окно "Find symbols"
Другая функция функция - "Find symbol", так же является аналогом стандартной. Для нее можно сказать все то же самое - быстрее, точнее, удобнее. Данная функция, по сути, является специализированным аналогом "Find in files" и часто используется при разработке. Поэтому разработчики Visual Assist не только реализовали ее в качестве отдельного окна, но и вынесли на панель "VA View".

Панель "VA View" комбинирует в себе функциональность стандартных панелей "Solution Explorer", "File View" и "Class View". На ней отображается список открываемых файлов и список функций и классов, содержащихся в области видимости того блока кода, в котором в данный момент установлен курсор. "VA View", в частности, реализует ту возможность, которой так не хватает в панели "Solution Explorer" - фильтрацию файлов, входящих в проект, по имени.

Рефакторинг кода

Набор инструментов рефакторинга Visual Assist
Набор инструментов рефакторинга Visual Assist
Visual Assist реализует набор инструментов рефакторинга, доступный во всех трех языках, поддерживаемых Visual Assist: С++, C# и Visual Basic .NET. Для разработчиков С++ - это один из немногих вариантов получить средства рефакторинга (плагины студии, поддерживающие рефакторинг программ на С++, можно пересчитать по пальцам; фактически, единственная альтернатива - установить Refactor! Pro или бесплатный плагин Refactor! for C++). Разработчики C# получают альтернативный набор инструментов, более быстрый и предоставляющий некоторые дополнительные возможности.

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

.. и многое другое

Перечислять функции Visual Assist можно долго. Встроенная проверка орфографии, возможность быстро закомментировать выделенный текст, автоматическое превращение "." в "->", автоматический ввод "m_" при нажатии Shift+M, автоматическая подстановка завершающих скобочек, форматирование кода при вставке текста, произвольный доступ ко всем буферам обмена IDE и т.д.

В текущей версии Visual Assist 10.4.1647.0 реализовано свыше 50 функций, но еще недавно их было около 40. Создатели Visual Assist не сидят без дела и активно совершенствуют свой продукт. В результате, даже опытные разработчики, давно использующие Visual Assist в работе, порой не осведомлены о многих его возможностях. Так что рекомендую заглянуть в документацию. Много времени это не займет - документация сделана очень грамотно, минимум текста - максимум информативности. Но не исключено, что вы обнаружите пару тройку новых возможностей, которых вам как раз так не хватало в работе..



Статистика
Всего программ 29485
Скачиваний сегодня 169
Скачиваний вчера 1817