Что нового в ReSharper C⁠+⁠+ 2026.1

ReSharper C⁠+⁠+ 2026.1 быстрее запускается и потребляет меньше памяти. В этой версии мы добавили поддержку директивы #embed из C++26 и других новых возможностей языка, автоимпорт для модулей C++20 и новые сценарии постфиксного автодополнения. Разработчиков на Unreal Engine ждет улучшенная интеграция с Blueprint и полная совместимость с предстоящим Unreal Engine 5.8.

Производительность

Мы значительно оптимизировали работу IDE на всех этапах, что особенно заметно в крупных проектах Unreal Engine. Наши замеры на проекте Lyra (Unreal Engine) в режиме Out-of-Process показали отличные результаты:

  • Первичная индексация С++-кода стала до 20% быстрее — решение открывается заметно оперативнее.
  • Время повторного запуска сократилось более чем на 20% — возврат к уже открытому решению стал ощутимо быстрее.
  • Потребление памяти бэкендом после перезапуска снизилось на 21%, освобождая ресурсы для других задач.

Возможности языка

ReSharper C⁠+⁠+ теперь поддерживает директиву препроцессора #embed, появившуюся в C⁠+⁠+⁠26 и C23. Она позволяет встраивать содержимое исполняемого файла ресурсов прямо в исходный код без использования внешних инструментов или генерации кода.

В этой версии также появилась поддержка еще двух возможностей языка:

  • Оператор _Countof: ReSharper C⁠+⁠+ теперь распознает оператор _Countof из C2Y (будущего стандарта C), который возвращает количество элементов в массиве.
  • Числа с плавающей точкой: добавлена поддержка типов bfloat16_t, float16_t, and float128_t из C++23.

ReSharper C++ 2026.1 лучше работает с расширениями компиляторов:

  • Вложенные функции: ReSharper C⁠+⁠+ теперь поддерживает расширение GCC, позволяющее определять функции внутри других функций в коде на C.
  • Квалификаторы _Nullable/_Nonnull: парсер теперь распознает квалификаторы nullable-указателей из Clang.

Помощь в написании кода

Работать с модулями C⁠+⁠+⁠20 стало проще благодаря новой поддержке автоимпорта в ReSharper C⁠+⁠+. Если вы используете экспортированный символ, но соответствующее объявление import отсутствует, IDE предложит вставить его автоматически. На данный момент автоимпорт работает только для символов, экспортированных напрямую из основных интерфейсных единиц и разделов модуля.

Постфиксное автодополнение теперь охватывает следующие сценарии:

  • Примитивные типы: раньше постфиксное автодополнение работало только с типами классов и структур. Теперь оно также работает с выражениями примитивных типов — int, bool, float и другими.
  • Литералы: постфиксное автодополнение теперь работает после литералов — например, 42.cos разворачивается в cos(42).
  • Пользовательские суффиксы литералов: теперь автодополнение кода работает и для операторов пользовательских литералов. Если после литерала ввести символ _, ReSharper C++ предложит подходящие суффиксы operator"", доступные в текущей области видимости.

Работать с кодом стало комфортнее благодаря двум улучшениям автоотступа:

  • Теперь при нажатии Enter между фигурными скобками управляющей конструкции или объявления класса курсор автоматически ставится в правильное место с корректным отступом, даже если присутствуют атрибуты (например, class [[deprecated]] MyClass {}).
  • Автоотступ внутри блоков extern теперь учитывает настройку форматирования Indent linkage specification block members.

Unreal Engine

В ReSharper C⁠+⁠+ 2026.1 улучшена поддержка Blueprint:

  • BlueprintPure в Code Vision: теперь Code Vision распознает функции со спецификатором BlueprintPure наряду с BlueprintCallable.
  • Реализации событий в Code Vision: теперь Code Vision находит реализации функций BlueprintNativeEvent и BlueprintImplementableEvent прямо в ассетах Blueprint.
  • Find Usages для свойств делегатов: Find Usages теперь находит привязки на стороне Blueprint для свойств делегатов BlueprintAssignable.
  • Более точный поиск по Blueprint: Find Usages для ссылок на Blueprint теперь ищет по пути к ассету, а не по имени. Это значит, что если в проекте есть несколько Blueprint-ассетов с одинаковыми именами, результаты поиска больше не будут двусмысленными.

Теперь ReSharper C⁠+⁠+ по умолчанию индексирует плагины Unreal Engine. Учитывая, что в проектах на Unreal Engine плагины используются все чаще, а производительность IDE заметно выросла, индексация плагинов по умолчанию обеспечит более качественный анализ кода и навигацию сразу после установки. Вернуть прежнее поведение можно на странице ReSharper | Options | Code Editing | C/C++ | Unreal Engine в Settings.

В ReSharper C++ также появилась поддержка изменений UnrealHeaderTool из предстоящего Unreal Engine 5.8. В частности, макросы DECLARE_DYNAMIC_MULTICAST_DELEGATE больше не вызывают ложноположительных ошибок при анализе кода.

Если вы хотите разрабатывать на Unreal Engine в отдельной кросс-платформенной IDE, обратите внимание на Rider. Поддержка Unreal Engine в Rider соответствует возможностям ReSharper C⁠+⁠+, поэтому в Rider 2026.1 вас ждут такие же улучшения.

Анализ кода

В ReSharper C++ 2026.1 встроенный Clang-Tidy обновлен до Clang 22 с самыми свежими проверками и улучшениями из последнего релиза LLVM.

Новая инспекция обнаруживает назначенные инициализаторы, порядок которых отличается от порядка объявления соответствующих членов в структуре. Поскольку C++20 требует, чтобы назначенные инициализаторы следовали порядку объявления, нарушение этого порядка приводит к ошибке компиляции. Теперь ReSharper C++ отмечает такие случаи и предлагает быстрое исправление, которое автоматически переупорядочивает список инициализации в соответствии с определением структуры.

Еще одна новая инспекция предупреждает, когда функция имеет иной уровень доступа (public, protected или private), чем виртуальная функция, которую она переопределяет в базовом классе. Хотя C⁠+⁠+ допускает изменение уровня доступа при переопределении, на практике это часто происходит непреднамеренно и может приводить к неожиданному поведению. Инспекция помогает выявлять подобные неочевидные несоответствия.

В этом релизе инспекции Unused symbol распространяются на члены классов, определенные в файлах .cpp. Ранее считалось, что эти члены видимы извне, поэтому они не участвовали в анализе Unused symbol. Теперь они анализируются так же, как static-функции и члены анонимных пространств имен.

Навигация

Мы доработали значки на полях в файлах C++, чтобы вам было проще ориентироваться в сложных кодовых базах и понимать их структуру.

  • Всплывающие подсказки с семантической подсветкой: теперь подсказки, которые появляются при наведении на значки на полях, используют семантическую подсветку, поэтому их легче воспринимать с первого взгляда.
  • Переход к базовым классам: новый значок на полях рядом с объявлением класса позволяет подниматься вверх по иерархии наследования к базовым классам, дополняя уже существующие значки перехода к производным классам.

Go to Declaration и другие действия навигации теперь работают на открывающей фигурной скобке в выражениях инициализации (например, MyStruct { 1 }) — в дополнение к имени типа.

Интеграция с Visual Studio

Всплывающие подсказки ReSharper C⁠+⁠+ теперь доступны для Visual Studio 2026. Мы вернули их поддержку, которой не хватало в первоначальном выпуске совместимости с Visual Studio 2026. Оформление подсказок также улучшено: иконки теперь помогают различать типы символов, а поддержка тем стала лучше.

Мы обновили некоторые элементы интерфейса в ReSharper, чтобы они лучше соответствовали современному стилю Visual Studio.

Благодаря редизайну интерфейс автодополнения теперь выглядит более лаконично и аккуратно.

Также мы обновили связанные элементы: подсказки параметров, тултипы и другие всплывающие элементы. Теперь они выглядят современнее, корректно отображаются при любом масштабе (DPI) и подстраиваются под выбранную тему оформления.

Обновленный интерфейс теперь поддерживает функцию масштабирования редактора Visual Studio, поэтому списки автодополнения и подсказки параметров корректно отображаются при изменинии масштаба в редакторе.

ReSharper C⁠+⁠+ 2026.1 исправляет несколько проблем в модели проекта:

  • Проекты Windows Driver Kit (WDK): ReSharper C++ теперь корректно распознает специфичные для WDK платформенные наборы инструментов и подставляет подходящие определения препроцессора по умолчанию.
  • Проекты WinUI 3: пути включения теперь настраиваются корректно.
  • Каталоги библиотек для Type Libraries: ReSharper C++ теперь находит файлы COM Type Library (.tlb) в каталогах библиотек, настроенных в параметрах проекта Visual Studio.

В свежей версии ReSharper тоже много нового.