Підтримка С у ReSharper

Але зараз я хочу розповісти про щось за межею наших планів по 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:
    підтримка

  • Рефакторинг щодо введення нової змінної (Introduce Variable ):
  • Контекстні дії дляпідстановки макросів, як окремих так і вкладених (тобто повністю виконаних):
    дуже
  • Розуміння шаблонів дає ReSharper можливість правильно обчислити та дати можливість переходити до конкретних спеціалізацій того чи іншого шаблону:

    ReSharper

    Щоб дати вам уявлення про те, чого можна очікувати від поточної підтримки С++ в ReSharper, пропоную подивитися ось цей скринкаст:

    Як це спробувати?

    На даний момент у нас немає публічних збірок з якими можна було б експериментувати, іпоточний EAP не включає підтримку С++. Нам потрібно ще кілька місяців для того, щоб отримати щось, що варто показувати широкому загалу. Але якщо ви не хочете чекати, ось що ви можете зробити:

    • Перейдіть на сторінку підтримки С++ на нашому сайті.
    • Заповніть форму з описом тих розширень С++, бібліотек та версій мови, які ви використовуєте. Ми просимо вибачення за таке велике «опитувальник», але повірте — ця інформація дуже важлива для нас, щоб розуміти, над чим варто працювати в першу чергу.
    • Надайте нам запит на передплату приватним збіркам ReSharper з вбудованою підтримкою С++. Як тільки у нас буде приватна збірка яка зможе функціонувати з вашими налаштуваннями середовища, ми надішлемо вам e-mail з посиланням наскачування.

    Що таке?

    • Перш за все, хочеться в черговий раз підкреслити, що підтримка С++ не буде включена в ReSharper 8, тому що вона ще «сировата» для повноцінного продакшн-релізу.
    • У найближчі кілька місяців наша команда буде працювати над підтримкою С++, щоб представитипублічний EAP восени цього року. У міру того як ми додаватимемо підтримку нових версій мови, платформно-специфічних розширень, а також підтримку нових версій Visual Studio, ми розсилатимемо приватні білди тим, хто на них підписався.
    • На даний момент, у нас вже практично готова підтримка C/C++03 для маленьких та середніх за розміром проектів, які або не використовують сторонні бібліотеки взагалі, або використовують невеликі. Поточнийплан розробки на наступні кілька місяців виглядає приблизно так:
    • Підтримка невеликих та середніх за розміром проектів, які використовують більші бібліотеки, наприклад Boost
    • Підтримка С++11
    • Гарантія адекватної роботи з великими проектами.
    • Підтримка специфічних для Visual Studio розширень та підтримка MFC/ATL/WTL