Что нового в ReSharper C++ 2024.1

В ReSharper C++ 2024.1 улучшена поддержка модулей C++20 и появилась навигация по исходящим вызовам с помощью функции Call Tracking. Расширенная помощь при написании кода включает в себя улучшенный рефакторинг Change Signature, обновленную поддержку документирующих комментариев и многое другое. Для разработчиков Unreal Engine в ReSharper C++ 2024.1 теперь доступны поддержка фреймворка Slate UI, а также автодополнение путей ассетов в коде C++.

Скачать

Есть бесплатная пробная версия на 30 дней

Поддержка модулей C++20

Мы обновили процесс поиска модулей, и теперь ReSharper C++ внутренние разделы, не влияющие на внешний интерфейс модуля. Иначе говоря, это разделы модулей без самостоятельных объявлений export module.

Мы переработали внутреннее представление экспортированных модулей C++20, упростив импорт транзитивных ссылок на объекты из других модулей. Раньше такие объекты приходилось заново экспортировать из модуля, куда они были импортированы. Мы надеемся, что эти изменения заметно упростят работу с экспортированными модулями и повысят производительность на проектах, где используются модули C++20.

Unreal Engine

В ReSharper C++ 2024.1 добавлена поддержка фреймворка Slate UI для Unreal Engine. Встроенный инструмент форматирования и функции помощи при редактировании кода помогут отформатировать код Slate в соответствии с требованиями Unreal Engine. Такие функции, как Go to declaration, Find Usages и Rename, также были обновлены и теперь понимают синтаксис объявлений Slate.

Благодаря интеграции с возможностями Blueprints новая версия ReSharper C++ поддерживает добавление Core Redirects при переименовании экземпляра UENUM, а также автодополнение путей ассетов для имен ресурсов в коде C++.

В коде шейдеров теперь поддерживаются интерфейсы HLSL, используемые для динамического связывания шейдеров.

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

Исходящие вызовы в Call Tracking

В новой версии ReSharper функция Call Tracking поддерживает не только отслеживание входящих вызовов, как раньше, но и навигацию по всем цепочкам исходящих вызовов. Чтобы посмотреть исходящие вызовы, поместите курсор в любую функцию и выберите в контекстном меню пункт Inspect | Outgoing calls. Можно также нажать Ctrl+Shift+Alt+A, чтобы вызвать нужное действие из меню Inspect This.

Улучшения рефакторинга Change Signature

Теперь с помощью рефакторинга Change Signature удобно менять тип параметра функции: указатель, ссылка или значение. ReSharper автоматически обновит все использования параметра в теле функции и исправит ее аргументы в местах вызова, добавив при необходимости операторы разыменования и взятия адреса.

При вызове Change Signature для функции, у которой могут быть использования в зависимом коде, обновленный рефакторинг позволяет проверить изменения и указать, какие именно использования нужно обновить.

Можно также указать аргументы по умолчанию для новых параметров функции, добавленных с помощью Change Signature.

Другие важные изменения Change Signature:

  • улучшена обработка шаблонов функций с переменным числом аргументов;
  • правильно обновляются аргументы функций для мест вызовов внутри вызовов макросов;
  • теперь Change Signature сохраняет типы массивов и спецификатор типа int в типах unsigned int.

Документирующие комментарии

В новой версии можно настроить стиль генерируемых документирующих комментариев, при этом не придется редактировать шаблон Live Template. Это можно сделать в меню ReSharper Settings | Code editing | C++ | Code generation.

Начиная с версии 2023.3, в ReSharper используется новый инструмент проверки правописания и грамматики — JetBrains Grazie. В версии 2024.1 инспекции для проверки грамматики на основе Grazie стали доступны и в документирующих комментариях C++.

В новой версии рефакторинг Change Signature сохраняет синхронизацию команд @param со списком параметров функций. Он удаляет @param для удаленных параметров, добавляет команды для новых параметров, а также меняет порядок существующих команд в соответствии с обновленным порядком включенных параметров.

Анализ кода

По свежим данным, полученным в ходе широкого тестирования инструментов рефакторинга C++, которое проводил Ричард Томсон, ReSharper C++ по-прежнему опережает конкурентов, успешно проходя большинство тестов. Мы постоянно стремимся улучшить качество вариантов, предлагаемых нашим инструментом, и в ReSharper C++ 2024.1 мы устранили несколько проблем, которые Ричард нашел в ходе этого тестирования. Например, быстрое исправление Create constructor from usage теперь при необходимости добавляет конструктор по умолчанию.

Версия ReSharper C++ 2024.1 предлагает удалить избыточные идиоматические инциализаторы нуля при агрегированной инициализации. Несколько новых инспекций помогают найти разные проблемы с членами статических данных, например, избыточные спецификаторы inline в членах данных static constexpr.

Инструмент очистки кода Code cleanup добавляет новые элементы, чтобы удалить избыточные спецификаторы доступности и создать классы без наследников final. Функция Apply ‘auto’ style в новой версии обрабатывает не только локальные, но и глобальные переменные, а также члены классов.

Раньше, чтобы отключить выбранную инспекцию для определенной области доступа, можно было использовать специальные комментарии // ReSharper disable. ReSharper C++ 2024.1 распознает также комментарии NOLINT, NOLINTNEXTLINE и NOLINTBEGIN ... NOLINTEND, используемые clang-tidy.

Форматирование кода

В ReSharper C++ 2024.1 появилось несколько новых параметров форматирования:

  • Break line after goto labels и Indent goto labels улучшают форматирование выражений с метками;
  • настройки, управляющие переносом строк внутри перечислений в Arrangement of enumerations;
  • Empty braces formatting теперь включает в себя параметр Do not change.

При использовании конфигурации .clang-format инструмент форматирования ReSharper теперь учитывает настройки DisableFormat и IndentAccessModifiers. Кроме того, поддерживается встроенный в GNU стиль clang-format.

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

Скачать

Есть бесплатная пробная версия на 30 дней