Pull to refresh
0
JetBrains
Делаем эффективные инструменты для разработчиков

Поддержка С++ в ReSharper

Reading time4 min
Views18K
Как вы наверное знаете, мы уже достаточно давно работаем над 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 как можно быстрее. Ну и не стесняйтесь рассказывать нам о том, что конкретно вы хотели бы видеть в плане поддержки С++ в комментариях к этому посту. Спасибо!
Tags:
Hubs:
+62
Comments41

Articles

Information

Website
jetbrains.com
Registered
Founded
Employees
1,001–5,000 employees
Location
Чехия