Как вы наверное знаете, мы уже достаточно давно работаем над 8й версией ReSharper — в процессе разработки мы улучшили навигацию, расширили поддержку XAML, добавили свой собственный механизм посмотра зависимостей между проектами, и добавили еще много нового и интересного функционала.
Но сейчас я хочу рассказать про нечто за гранью наших планов по 8-ке: уже несколько месяцев часть нашей команды работает над чем-то абсолютно новым, чего уже годы просили наши пользователи — поддержкой в ReSharper языка программирования C++.
Эта инициатива является частью нашего плана сделать С++ одним из языков, который был бы полностью поддержан в наших продуктах — как в ReSharper так и в отдельной кросс-платформенной среде разработки которую мы анонсировали ранее в этом году.
С++ является очень мощным языком, который за все эти годы никуда не делся, несмотря на появление и рост популярности его «языков-наследников» C# или Java: сегодня очень много кода пишется именно на этом языке, и пользоваться им будут еще очень долго. Мы в JetBrains верим, что наш инструментарий может помочь разработчикам на С++ разрабатывать быстрее и эффективнее.
Набор возможностей
Парсить язык вроде С++ нелегко, особенно если учесть весь тот препроцессинг и обработку шаблонов, которая является особенно трудоемкой в больших проектах. Нашей основной целью как раз является корректность обработки всех возможных нюансов, и большое количество усилий ушло как раз на то чтобы «понять» С++ вне зависимости от специфичных возможностей, которые используются в языке. На текущий момент у нас не так много видимого функционала, но проделано очень много фундаментальной работы. Сегодня, те внутренние билды которые готовятся у нас включают в себя следующий функционал:
- Поддержка подсветки синтаксиса
- Полный набор механизмов поддержки навигации включая такие механизмы как Go to Type, Go to Symbol, Go to File Member и конечно новый Go to Everything, специфичный для ReSharper 8.
- Поддержка контекстной навигации, в т.ч. навигацию к декларации (Go to Declaration), унаследованным символам (Derived Symbols), базовым символам (Base Symbols) — иначе говоря, поддержка всех основных возможностей которые можно ожидать при открытии меню Navigate To:
- Также у нас есть механизм поиска использования элемента (Find Usages) с предпросмотром, фильтрами поиска, различными возможностями группировки, и всем тем что обычно появиялется в окошке Find Usages.
- Боковые маркеры (gutter marks) в новом индикаторе возможных действий в ReSharper 8 помогают отслеживать связи между неследуемыми элементами и осуществлять переходы между ними:
- Рефакторинг по введению новой переменной (Introduce Variable):
- Контекстные действия для подстановки макросов, как отдельных так и вложенных (т.е. полностью выполненных):
- Понимание шаблонов дает ReSharper возможность правильно вычислить и дать возможность переходить к конкретным специализациям того или иного шаблона:
Чтобы дать вам представление того, чего можно ожидать от текущей поддержки С++ в ReSharper, предлагаю посмотреть вот этот скринкаст:
Как все это попробовать?
На текущий момент у нас нет публичных сборок с которыми можно было бы экспериментировать, и текущий EAP не включает в себя поддержку С++. Нам потребуется еще несколько месяцев для того чтобы получить нечто, что стоит показывать широкой публике. Но если вы не хотите ждать, вот что вы можете сделать:
- Перейдите на страницу поддержки С++ на нашем сайте.
- Заполните форму с описанием тех расширений С++, библиотек и версий языка которые вы используете. Мы просим прощения за такой большой «опросник», но поверьте — эта информация очень важна для нас чтобы понимать, над чем стоит работать в первую очередь.
- Отправьте нам запрос на подписку к приватным сборкам ReSharper со встроенной поддержкой С++. Как только у нас будет приватная сборка которая сможет функционировать с вашими настройками среды, мы пришлем вам e-mail со ссылкой для скачивания.
Что следующее?
- Предже всего, хочется в очередной раз подчеркнуть что поддержка С++ не будет включена в ReSharper 8 потому что она еще «сыровата» для полноценного продакшн-релиза.
- В ближайшие несколько месяцев, наша команда будет работать над поддержкой С++ чтобы представить публичный EAP осенью этого года. По мере того как мы будем добавлять поддержку новых версий языка, платформно-специфичных расширений, а также поддержку новых версий Visual Studio, мы будем рассылать приватные билды тем, кто на них подписался.
- На текущий момент, у нас уже практически готова поддержка C/C++03 для маленьких и средних по размеру проектов которые или не используют сторонние библиотеки вообще, или используют небольшие. Текущий план разработки на следующие несколько месяцев выглядит примерно вот так:
- Поддержка небольших и средних по размеру проектов которые используют более крупные библиотеки, например Boost
- Поддержка С++11
- Гарантия адекватной работы в крупными проектами
- Поддержка специфичных для Visual Studio расширений, а также поддержка MFC/ATL/WTL
- Как только у нас будет все готово для публичного релиза, мы откроем программу раннего доступа (ЕАР) и, после публичного тестирования, добавим поддержку С++ в основной билд ReSharper так, что поддержка С++ станет частью ReSharper Full Edition.
Ну как, интересно? Может быть вы уже давно ждали этой новости? Тогда подпишитесь на приватные сборки и, работая с ними, помогите нам сделать поддержку С++ частью ReSharper как можно быстрее. Ну и не стесняйтесь рассказывать нам о том, что конкретно вы хотели бы видеть в плане поддержки С++ в комментариях к этому посту. Спасибо!
Автор: mezastel