Что нового в Rider

Новая версия Rider включает в себя полную поддержку Unreal Engine — теперь это полнофункциональная IDE для разработки игр на любых движках. 

Кроме того, Rider 2022.1 поддерживает бета-версию нашего нового решения для удаленной разработки: вы можете подключаться к удаленному серверу, на котором запущен бэкенд Rider, из любой точки мира.

В Rider добавлен режим Docker Fast и обновлена главная панель инструментов, а полнотекстовый поиск по всему решению можно запускать из окна Search Everywhere.

Разработка игр на Unreal Engine

Rider уже пользуется популярностью среди Unity-разработчиков, а теперь — с полной поддержкой Unreal Engine — это наша главная IDE для разработки игр.

Глубокая интеграция с Unreal Engine

Глубокая интеграция с Unreal Engine

Rider 2022.1 поддерживает разработку на Unreal Engine под Windows, Linux и macOS. IDE нативно работает с моделью .uproject: вам не придется тратить время на генерацию промежуточной проектной модели.

Плагин UnrealLink интегрирует Rider с редактором для Unreal Engine от Epic Games. В частности, плагин:

  • отображает в редакторе информацию из файлов Blueprints;
  • поддерживает настройки запуска игры;
  • предлагает более удобную версию лога Unreal Editor.
Первоклассная поддержка C++

Первоклассная поддержка C++

Rider базируется на функциональности ReSharper C++, включающей нативную поддержку современного C++, и предоставляет более 1300 инспекций кода и 290 быстрых исправлений, возможности кодогенерации и рефакторинги, которые можно применить к коду всего проекта. Rider позволяет быстро перемещаться по коду, будь то C++, Unreal Engine или код шейдеров, и поясняет код с помощью встроенных подсказок.

Подробнее

Механизм рефлексии Unreal Engine

Механизм рефлексии Unreal Engine

В Rider макросы рефлексии и спецификаторы рефлексии Unreal Engine — это не просто текстовая подстановка. Функции автодополнения и быстрого просмотра документации знают об этих сущностях, и вы можете ими пользоваться. Точно так же Rider отличает удаленный вызов процедур Unreal Engine от обычных функций. Эти вызовы сопоставляются при навигации и генерации кода.

Анализ кода Unreal Engine

Анализ кода Unreal Engine

Благодаря интеграции с UnrealHeaderTool вы можете просматривать ошибки компиляции прямо в редакторе, когда пишете код. В новой версии этот процесс практически не влияет на общую производительность.

Rider идентифицирует проекты Unreal Engine и автоматически применяет правила именования Unreal Engine при генерации и анализе кода.

Отладчик

Отладчик

LLDB-отладчик с поддержкой Unreal Engine Natvis поможет найти любые ошибки в коде игры или движке. Вы можете добавлять точки останова для строк, символов, данных и срабатывающие при определенных условиях. Также можно выполнять пошаговую отладку, вычислять выражения и просматривать значения переменных во время сеанса отладки прямо в редакторе Rider.

Юнит-тестирование

Юнит-тестирование

Rider поддерживает фреймворк автоматизации тестирования Unreal Engine. Вы можете запускать тесты из окна Unit Test или прямо из редактора, смотреть результаты и перезапускать отдельные тесты, только те, что не прошли, или все сразу.

Rider позволяет разрабатывать любые проекты на C++ под Windows: просто откройте в качестве проекта файл .sln. Для разработки на C++ под Linux или macOS используйте проектную модель .uproject. Здесь можно узнать, чем Rider, CLion и ReSharper C++ отличаются друг от друга в контексте разработки на C++ и Unreal Engine.

Удаленная разработка Beta

Удаленная разработка

Rider поддерживает удаленную разработку в режиме Beta. Теперь вы можете подключаться к удаленному серверу, на котором запущен бэкенд Rider, из любой точки мира. Вся обработка данных выполняется на мощной удаленной машине, а вы работаете над проектом, как будто он размещен локально. Попробуйте эту функциональность на начальном экране или через специальное приложение JetBrains Gateway (доступно в Toolbox App).

Кроме того, вы можете воспользоваться JetBrains Space — универсальной платформой, охватывающей весь пайплайн разработки. Она позволяет создавать и настраивать удаленные среды разработки, управлять ими, переводить их в режим гибернации и приглашать коллег к совместной работе. Подробнее об этом читайте в нашем блоге.

Панель инструментов

Кастомизация новой панели инструментов

Кастомизация новой панели инструментов

Нашим пользователям понравилась новая панель инструментов. Однако многие жаловались, что на нее нельзя добавлять свои виджеты и менять существующие. Вы просили — мы сделали: теперь можно добавлять виджеты в левую и правую часть панели, а также реорганизовывать их и удалять ненужные.

Чтобы настроить панель:

  • перейдите в Preferences/Settings | Appearance & Behavior | Menus and Toolbars | Toolbar или
  • нажмите на панель правой кнопкой и выберите Customize Toolbar.
Запуск профилирования из новой панели инструментов

Запуск профилирования из новой панели инструментов

Если вы пользовались Rider 2021.3, то могли заметить, что с панели инструментов было невозможно запустить профилирование с помощью dotTrace. В новой версии мы решили эту проблему.

Для доступа к функциям Profile with Timeline, Profile with... и Profile running process... используйте меню More виджета Run/Debug (три вертикальные точки).

Режим Fast для Docker

Для решений Docker и Docker-Compose появился режим Fast, позволяющий существенно снизить время сборки.

Сборка проекта внутри контейнера намного медленнее локальной. Если же вы включите режим Fast, Rider сначала создаст базовый Docker-образ при помощи docker build, а затем соберет проект на клиентском устройстве — это гораздо быстрее. В итоге, артефакты проекта монтируются к Docker-контейнеру в качестве тома. Режим работает только для конфигураций Debug: сборка проектов с конфигурацией Release будет выполняться по шагам, указанным в Dockerfile.

Режим Fast можно отключить для любой конфигурации запуска: Edit Run Configuration | Build | Modify options | Don’t use Docker fast debug.

Поиск текста при помощи Search Everywhere

Search Everywhere позволяет найти в решении, настройках IDE или истории Git все что угодно. Мы добавили в окно вкладку Text: она показывает все вхождения строки, которую вы печатаете, в решении. Для этого запускается полнотекстовый поиск по всему коду и текстовым файлам, включая файлы .cs, .fs, .cshtml, .json, .js, .css, .editorconfig, .cvs, .dockerfile, .md и .txt.

Полученные результаты также попадают на вкладку All.

Область поиска можно ограничить:

  • задав конкретную область поиска — All places (везде), Recently viewed files (по недавним файлам), Local changes (по локальным изменениям) или Data sources (по источникам данных);
  • указав тип файла, маску или конкретные названия файлов.

При этом функция Find in Files осталась неизменной. Вы можете пользоваться обоими видами поиска.

Изменения в интерфейсе

Новое окно Notifications

Новое окно Notifications

Вместо журнала событий теперь есть окно Notifications. В нем лучше структурированы уведомления IDE и отмечается все самое важное и полезное. Открыть окно можно через панель навигации.

Уведомления в окне Notifications подразделяются на две категории: Suggestions и Timeline.

В раздел Suggestions попадают уведомления, которые, как правило, оказываются наиболее полезны. Они в свою очередь делятся на важные и обычные. Когда приходит важное уведомление, на значке колокольчика на панели навигации появляется красный кружок. Обычные уведомления отмечаются синим кружком.

Индикатор масштаба

Индикатор масштаба

Раньше было сложно понять, в каком масштабе отображаются данные в редакторе: в интерфейсе не было соответствующего индикатора.

Теперь в нижней части текстового редактора есть специальный виджет, который показывает текущий размер шрифта и позволяет легко сбросить его до стандартного.

Из виджета можно перейти к настройкам и указать, должен ли выбранный масштаб применяться ко всем окнам редактора или только к текущему.

Сочетания клавиш из Visual Studio 2022

Сочетания клавиш из Visual Studio 2022

Мы добавили в Rider новый набор сочетаний клавиш «Visual Studio 2022». В отличие от набора сочетаний «Visual Studio», он полностью повторяет сочетания клавиш из IDE Visual Studio (например Alt+Up/Down). Новый набор сочетаний клавиш будет удобен тем, кто привык пользоваться версиями Visual Studio, выпущенными до 2022 года, без ReSharper.

Языковая поддержка

Поддержка C#

We continue to improve support for C# 10, particularly global usings. добавлены два новых рефакторинга и соответствующие контекстные действия.

Рефакторинг Extract Global Using поможет внедрить в проект директивы global using. Если запустить его для обычных директив using, Rider предложит вынести их в файл GlobalUsings.cs (если в проекте такого файла нет, Rider его создаст). В таком случае обычная директива using станет не нужна, и Rider удалит ее из файлов проекта.

Рефакторинг Inline Global Using поможет заменить глобальную директиву using на обычную. Если вызвать рефакторинг для глобальной директивы using, Rider удалит ее из GlobalUsings.cs и добавит соответствующую директиву using во все файлы проекта, где она необходима.

Директивы global using поддерживаются функцией анализа кода для методов расширения, а также в Find Usages.

We’ve looked into the approaching C# 11 and supported generic attributes.

Cсылочные типы, допускающие значение null

  • Мы разделили предупреждения, которые отображаются при проверке на допустимость значения null, на две категории — в зависимости от типа выражения: для выражений, которые никогда не принимают значение null из-за аннотации NRT, и для выражений, проверка которых осуществляется во время выполнения.
  • Теперь можно переключаться в режим runtime enforced not null warnings only. Новая настройка доступна в меню Alt+Enter для предупреждений annotation-based.
  • Мы поддержали аннотации [MemberNotNull] и [MemberNotNullWhen] для проектов, в которых не используются ссылочные типы, допускающие значение null.

Razor и Blazor

Главные улучшения для Razor и Blazor в этой версии:

  • Теперь Rider поддерживает атрибут [EditorRequired] из .NET 6. Вы можете использовать соответствующую инспекцию и быстрое исправление, когда ссылаетесь на компоненты Blazor, не указывая требуемые параметры.
  • Реализована долгожданная поддержка локальных функций C# в рамках синтаксиса Razor.
  • Мы улучшили функцию очистки кода в файлах .razor с компонентами Blazor: теперь она не удаляет объявления @using.
  • Контекстные действия If To Switch и Invert If теперь работают корректно для кода Razor со ссылками на компоненты Blazor.
  • Мы откорректировали правила именования, используемые Rider для внедренных свойств Blazor.
  • Действие Comment with Line Comment стало работать корректно для кода Razor.
  • Теперь можно перемещаться по иерархии наследования в коде Razor. Базовые и производные символы отмечаются на полях редактора — это позволяет легко выполнять навигацию.

Поддержка F#

  • Мы исправили проблемы с проектной моделью, которые вызывали зависание при загрузке и обновлении проекта, а также проблемы, из-за которых при анализе кода игнорировались изменения в проектах и других файлах. Также мы исправили проблемы, из-за которых в файлах F# не работали ссылки на пакеты и директивы include из других файлов.
  • Проектам C# теперь видны атрибуты InternalVisibleTo, объявленные в проектах F#, поэтому при доступе к внутренним символам больше не возникает ошибок.
  • Мы исправили некоторые ошибки, связанные с поставщиками типов, например ошибки анализа, которые возникали, когда в коде повторно создавался экземпляр одного и того же поставщика типов.
  • Устранена проблема, из-за которой рефакторинг Rename не работал для некоторых символов.
  • Мы исправили ряд ошибок в плагине F#, а также добавили новые анализаторы и быстрые исправления, предлагающие использовать новые возможности F#. Также мы улучшили часть существующей функциональности поддержки F#. You can take a look at the full release notes for more information.

Добавление веб-ссылок

Веб-ссылки

Добавлять веб-ссылки в .NET-проекты стало проще. Вот основные улучшения:

  • Теперь вы можете добавлять веб-ссылки в проекты .NET и .NET Core (раньше это можно было делать только в проектах .NET Framework).
  • Можно ссылаться на файлы .wsdl, указывая путь к файлу (вам больше не нужно брать URL-адрес из окна Add Web Reference).
  • При добавлении в проект веб-сервиса WCF ссылка на него появится в узле Services представления Solution.
  • Если для веб-ссылки настроена базовая аутентификация, Rider попросит вас ввести учетные данные.
  • Мы поддержали префиксы URL-адресов net.tcp и net.pipe.

Веб-разработка

Конечные точки

Конечные точки

Мы продолжаем улучшать поддержку конечных точек. В представлении Endpoints теперь отображается информация о конечных точках для маршрутизации минимального API из ASP.NET Core 6 и конвенциональной маршрутизации. Это значит, что в дополнение к доступным ранее возможностям, вы можете исследовать такие конечные точки, переходить к ним напрямую и пользоваться умным автодополнением кода.

Улучшения для Vue

Улучшения для Vue

Rider 2022.1 включает ряд улучшений для Vue 3. Теперь IDE распознает глобальные компоненты в файлах .vue. Также мы улучшили поддержку синтаксиса createApp: IDE правильно соотносит приложения, созданные с помощью createApp, с релевантными элементами. Кроме того, мы добавили поддержку Nuxt 3 — новой версии популярного фреймворка для Vue.

Поддержка Unity

Мы продолжаем расширять поддержку Unity и включили в Rider 2022.1 новые возможности, улучшения производительности, исправления и внутренние оптимизации.

Также мы представляем RiderFlow — новый инструмент для работы со сценами. Это бесплатный плагин для редактора Unity, позволяющий дизайнерам, художникам, программистам и другим членам команды с легкостью создавать сцены и управлять ими. Вы можете быстро перемещаться по коду, находить игровые объекты и ресурсы, легко заменять объекты сцены. Используемые в сцене ассеты подсвечиваются. Подробнее о новом инструменте читайте на странице RiderFlow.

Теперь Rider автоматически обновляет файл .asmdef при добавлении или удалении ссылок на проект. При использовании типа из другого проекта, Rider добавит ссылку в файл .asmdef и импортирует тип.

Теперь Rider поддерживает файлы Assembly Definition Reference .asmref, а также файлы .asmdef: вы можете пользоваться подсветкой синтаксиса и автодополнением, проверять код на соответствие схеме. Нажав Ctrl+Click для названия ссылки, вы попадете в соответствующий файл .asmdef, а если таких файлов несколько — увидите их в окне Find Usages.

В проектах теперь есть конфигурация для запуска редактора Unity в массовом режиме. С ее помощью удобно запускать юнит-тесты. При этом результаты сохранятся в папке Logs.

Теперь Unity поддерживает новые версии C#, поэтому подсветка типов Unity Color в Rider теперь покрывает target-typed выражения new. Вы можете быстро просматривать заданный цвет и пользоваться Alt+Enter для редактирования значения.

Большие проекты Unity теперь загружаются быстрее. Это особенно заметно, если у вас медленный жесткий диск или файловая система. На маленьких проектах разница не так ощутима, но вы наверняка заметите более экономное использование памяти при загрузке.

В новой версии есть и другие оптимизации производительности. Мы ускорили поведение IDE при вводе текста с открытым окном Unity Explorer. Кроме того, Rider быстро отображает длинные записи лога в окне инструментов Unity.

Как всегда, мы добавили много мелких исправлений и улучшений. В частности, появились инспекции, подсказывающие правильную сигнатуру методов [MenuItem], исправлены ошибки при поиске места установки документации на Linux, добавлено уведомление о доступных обновлениях пакета Rider. As always, the full details are listed in the changelog.

Плагины

Azure Toolkit для Rider

Azure Functions Core Tools в привязке к версии

Rider определяет версию Azure Functions Core Tools на основе поля AzureFunctionsVersion в вашем проекте.

Если вам нужно установить определенную версию Azure Functions Core Tools, скачайте ее с помощью Chocolatey, Brew или npm и пропишите нужный путь в Preferences / Settings | Tools | Azure | Functions.

Azure Functions Core Tools под управлением Rider

По умолчанию Rider самостоятельно управляет Azure Functions Core Tools — скачивает инструменты, которые нужны в вашем проекте, и автоматически обновляет их.

Markdown

Markdown

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

Мы добавили новые опции в плавающую панель инструментов (она появляется при редактировании файла Markdown — когда вы выделяете текст). Теперь там можно быстро выбрать стиль заголовка и создать список. Вы можете сами выбирать, какие опции должны быть на этой панели: для этого перейдите в Preferences / Settings | Appearance & Behavior | Menus and Toolbars | Markdown Editor Floating Toolbar.

Markdown

Для Markdown появилось действие Copy code snippet, позволяющее копировать данные в буфер обмена.

dotCover

dotCover dotUltimate

Теперь вы можете помечать код, который не нужно анализировать, тем самым исключая его из процесса анализа покрытия и получая более релевантные результаты. To use this feature, install the JetBrains.dotCover.MSBuild NuGet package and add the comments // dotcover disable/enable around the code. Подробнее об изменениях можно узнать здесь.

Поддержка систем контроля версий

Просмотр Diff в окне Commit

Просмотр Diff в окне Commit

Мы переместили иконку Preview Diff с панели Commit в меню и переименовали ее в Show Diff Preview on Single Click. Здесь вы можете прописать действия, которые должны выполняться при нажатии на файл в дереве Changes: для этого выберите файл или откройте окно просмотра Diff.

Обновленное действие Annotate with Git Blame

Действие Annotate with Git Blame

С помощью Annotate with Git Blame стало проще исследовать изменения. При наведении курсора на аннотацию Rider покажет различия между строками, а при нажатии на аннотацию откроет окно Git Log.

Обновленная панель Commit Details в окне Git

На панели Commit Details теперь содержится информация о подписях GPG и статусе сборки. Раньше эти данные можно было посмотреть только в Git-логе.

Новый интерфейс Git File History, независимый от индексирования

Новый интерфейс окна Git File History теперь не зависит от процесса индексирования: данные отображаются, даже если индексирование лога выключено.

Раньше, отображая историю файлов без индексов, IDE работала медленно и не давала вам пользоваться некоторыми возможностями.

Другие возможности

Переименование решения

Переименование решения

Придумывать названия бывает сложно. Если вдруг вам понадобится переименовать целое решение, в окне Solution Explorer вызовите контекстное меню для решения, выберите Edit | Rename и введите новое название.

Выбор SDK в окне New Project

Выбор SDK в окне New Project

В окне New Solution/Project теперь можно выбрать SDK из выпадающего списка. Это будет полезно, если вы захотите создать проект для более ранней версии .NET SDK, после того как уже установили новую.

Запуск статических методов

Запуск статических методов

Теперь действие Run Static Method работает в проектах .NET и .NET Core. Можно запустить любой статический метод прямо из редактора: просто нажмите на зеленый треугольник («Run») на полях.

Roslyn

Roslyn

Мы улучшили поддержку анализаторов и генераторов кода Roslyn:

  • Rider поддерживает файлы .globalconfig для настройки правил анализа кода по анализаторам Roslyn.
  • Теперь Rider сообщает анализаторам Roslyn правильную версию языка.
  • Мы оптимизировали процесс загрузки и запуска генераторов исходного кода и анализаторов. Теперь не нужно перезапускать IDE, чтобы разрешить код, созданный генераторами.
Очистка и форматирование кода

Очистка и форматирование кода

Мы реорганизовали элементы меню Alt+Enter, относящиеся к очистке и форматированию кода. Теперь опции Format selection, Cleanup selection и Apply syntax style вы найдете под пунктом Reformat and Cleanup.

Кроме того, настраивать стиль синтаксиса можно с помощью действий Configure code style и Autodetect code style settings. На панели Preview code style также отображаются изменения стиля синтаксиса.

Поддержка NuGet

Мы обновили элементы селектора иконок для пакетов на странице настройки проектов NuGet.

Улучшенная поддержка атрибутов DebuggerDisplay

  • При отображении производного типа отладчик теперь учитывает атрибут DebuggerDisplay, даже если он был применен к базовому типу.
  • Теперь отладчик поддерживает атрибуты DebuggerDisplay, указанные на уровне сборки.