Наведя курсор на макрос, можно увидеть в окне подсказки превью его раскрытия с полной подсветкой синтаксиса и правильным форматированием кода. Макрос можно, как и раньше, раскрыть прямо в редакторе с помощью контекстного действия Substitute macro call, но мгновенный предпросмотр упрощает работу.
Кроме того, во всплывающем окне Quick Documentation (Ctrl+Shift+F1) можно посмотреть документацию по любому объекту из предпросмотра подстановки, просто щелкнув по этому объекту. Если в раскрытом макросе есть неизвестный идентификатор, он будет подсвечен и в окне подсказки, и во всплывающем окне Quick Documentation, чтобы вам было проще найти ошибку.
В ReSharper C++ 2022.3 появилась начальная поддержка модулей C++20. В новой версии мы улучшили ее реализацию, обеспечив обработку разных сложных ситуаций и улучшив поддержку реальных проектов, в которых такие ситуации встречаются. Кроме того, мы расширили возможности ReSharper C++ для написания модульного кода.
Функция Find usages помогает найти все места, куда импортирован нужный модуль.
Рефакторинг Rename помогает безопасно переименовывать модули и разделы модулей, обновляя все соответствующие объявления и импорты в коде.
Автодополнение для модулей C++20 тоже улучшено. При вводе import функция предлагает имена известных модулей. Кроме того, там, где это разрешено, список вариантов автодополнения включает в себя связанные с модулями ключевые слова.
Мы также обновили ряд других функций редактора для поддержки модулей C++20. Форматирование кода и функция Rearrange code теперь обрабатывают блоки экспорта и экспортированные объекты. Чтобы изменить порядок элементов кода, поместите курсор в элемент кода или в выделенный фрагмент и нажмите Ctrl+Shift+Alt, а затем нажмите нужную клавишу со стрелкой.
Комитет ISO по стандартизации языка C++ недавно завершил техническую работу над спецификацией C++23. Многие возможности C++23 уже доступны в основных компиляторах, и вы можете использовать их в ReSharper C++ 2023.1.
Deducing this — важное нововведение C++23, которое предлагает новый способ указания функций-членов класса. Теперь параметр объекта можно сделать явным, используя ключевое слово this. Это упрощает реализацию некоторых идиом C++. Например, можно заменить перегрузки одинаковых функций, которые отличаются только квалификаторами const и reference, одной функцией, которая выводит тип и категорию значения из параметра объекта.
C++23 предлагает новые способы использования auto. Используя auto(x) и auto{x}, можно скопировать аргумент, как если бы он был передан в качестве аргумента функции по значению.
Кроме того, ReSharper C++ поддерживает следующие обновления C++23, которые упрощают существующий синтаксис языка:
() в лямбда-выражениях теперь во многих случаях ставить необязательно;
Теперь можно быстро добавить простой или сложный тест Unreal Engine с помощью новых встроенных шаблонов файлов. Просто перейдите в Solution Explorer, кликните правой кнопкой мыши по нужной папке и откройте меню Add (или нажмите Ctrl+Alt+Insert).
Кроме того, ReSharper C++ предлагает новый шаблон UINTERFACE в дополнение к UCLASS, USTRUCT и UENUM. Чтобы добавить новый класс интерфейса при работе с проектом Unreal Engine, достаточно выбрать соответствующий вариант в списке автодополнения.
Теперь можно настроить сопоставление исходных директорий, которые будут использоваться для разрешения директив #include в файлах шейдеров. Если в проекте игры или движка установлен RiderLink, сопоставления шейдеров можно загрузить прямо из Unreal Engine.
Теперь автодополнение позволяет сгенерировать лямбда-выражение, где ожидается делегат либо аргумент TFunction или TFunctionRef.
Если вы хотите разрабатывать на Unreal Engine в отдельной кросс-платформенной IDE, обратите внимание на Rider. Поддержка Unreal Engine в Rider соответствует возможностям ReSharper C++, поэтому в Rider 2023.1 вас ждут такие же улучшения.
Функция ReSharper Call tracking наконец появилась в ReSharper C++! Теперь можно просматривать цепочки вызовов в иерархии входящих вызовов и переходить по ним. Просто поместите курсор в любую функцию и выберите в контекстном меню Inspect | Incoming calls или нажмите Ctrl+Shift+Alt+A, чтобы вызвать действие из меню Inspect This.
В окне результатов отслеживания вызовов можно дважды щелкнуть по пункту иерархии, чтобы перейти к нужному вызову, или развернуть любой узел и посмотреть входящие в него вызовы.
Отслеживание исходящих вызовов пока не поддерживается.
Мы добавили инспекцию, которая отмечает передаваемые по значению параметры функций, если их сложно копировать. В таких случаях ReSharper C++ предлагает передать параметр по ссылке const. В то же время исправление Create function from usage теперь предпочитает передавать параметры, которые удобно копировать, по значению.
Новые инспекции предупреждают о возможных проблемах в структуре кода:
HRESULT или NTSTATUS.
Еще одна инспекция сообщает о случаях, когда вывод типов аргументов шаблона класса C++17 не может вывести типы аргументов, и позволяет добавить нужные аргументы с помощью быстрого исправления.
Кроме того, в ReSharper C++ 2023.1 добавлено много улучшений движка оценки компиляции, например оценка циклов for на основе диапазона и улучшенная поддержка объединенных типов.
Теперь большинство рефакторингов легко вызывать из меню Alt+Enter, а не только из всплывающего окна Refactor This (Ctrl+Shift+R).
Новое исправление Create parameter — это удобный способ быстро вызвать рефакторинг Change signature. Если нужно добавить новый параметр к контейнерной функции, достаточно вызвать исправление и ввести тип нового параметра. Рефакторинг обновит все объявления и использования функции и сообщит о любых возникших конфликтах.
Вызывать рефакторинги Extract method и Change signature стало проще.
Новая версия ReSharper C++ поддерживает макрос __VA_OPT__, добавленный в спецификацию C++20 для удобного определения вариативных макросов. Специальный функциональный макрос раскрывается в аргументы, если список аргументов переменных не пустой, в противном случае он заменяется ничем.
По умолчанию при сортировке директив #include пути к файлам ставятся перед папками. Чтобы отсортировать все элементы по алфавиту, можно отключить новый параметр Put files before folders.
Новый постфиксный шаблон позволяет быстро создать ссылку const, используя std::as_const или AsConst в проектах Unreal Engine.
В новой версии комментарии, начинающиеся с/*, не закрываются по умолчанию символами */. Автоматическую вставку символов, закрывающих комментарий, можно включить с помощью нового параметра Insert */ after /*.
В свежей версии ReSharper тоже много нового. Например, поддержка CSS теперь по умолчанию отключена.