Rider 2022.3 обеспечивает поддержку .NET 7 SDK, включая новые возможности C# 11. В новой версии значительно повышена производительность. Особое внимание было уделено сокращению времени запуска, а также возможности запуска Rider на WSL 2 (Windows Subsystem for Linux 2) в режиме удаленной разработки. Кроме того, мы существенно доработали интерфейс, в частности, добавили возможность закреплять расположение окон при использовании нескольких мониторов. И наконец, в этой версии расширена интеграция с редакторами Unity и Unreal.
Мы внесли некоторые изменения, чтобы ускорить запуск Rider и сократить время ожидания, пока IDE откроется, и можно будет приступить к работе:
Подробнее об улучшениях производительности Rider читайте здесь.
Новая версия Rider поддерживает WSL 2 (Windows Subsystem for Linux 2) благодаря функции удаленной разработки в IDE. Иначе говоря, вы можете запустить Rider в WSL 2, чтобы просматривать ваши решения и источники, а также выполнять сборку, отладку и запуск приложений, как если бы они хранились локально.
Простой процесс установки можно запустить прямо на начальном экране Rider. Функция удаленной разработки обеспечивает пользовательский интерфейс, поэтому WSLg не требуется, а локальный клиент RemoteDev устанавливается автоматически. Подробнее — в документации по удаленной разработке.
Мы наконец добавили долгожданную функцию закрепления окон. Чтобы вам было проще организовать рабочее пространство и удобнее взаимодействовать с Rider на нескольких мониторах, мы добавили возможность перетаскивать окна инструментов из главного окна и прикреплять их к плавающим вкладкам редактора.
Мы усовершенствовали алгоритм выдачи результатов поиска Search Everywhere: его поведение стало более предсказуемым, а результаты точнее соответствуют критериям поиска. Теперь при вводе запроса IDE фиксирует первые появившиеся результаты и не пересортировывает их по мере нахождения новых вариантов, как это было раньше.
Чтобы работать было удобнее, особенно при присоединении к процессу через SSH, мы добавили новый диалог Attach to process. Мы хотим, чтобы вы быстрее находили и выбирали нужный процесс, а IDE запоминала выбранный отладчик.
Мы повысили удобство редактирования, переработав поведение функции вставки (⌘V / Ctrl+V). Теперь, если скопировать (⌘C / Ctrl+C) или вырезать (⌘X / Ctrl+X) строку без выделенного кода, содержимое буфера обмена будет вставляться не там, где стоит курсор, а строкой выше.
Новое действие Edit | Paste Special: JSON as Classes
обеспечивает «умную вставку» объектов. Например, если вы скопировали фрагмент кода JSON и вставили его с помощью этого действия, на основе вставленного кода будут автоматически созданы классы C#.
Предлагаем вам попробовать переключиться на новый интерфейс IDE на платформе IntelliJ в меню Preferences/Settings | Appearance & Behavior | New UI Preview
. Новый интерфейс стал результатом нашего стремления визуально упростить IDE, чтобы вы могли сосредоточиться на работе.
Кроме того, мы внедряем новые небольшие изменения в интерфейс и порядок работы с Rider, чтобы сделать IDE более удобной:
File | New
в верхнем меню теперь называется File | New Solution
— это точнее соответствует выполняемому действию; В Rider 2022.3 появилась поддержка .NET 7 SDK, включая:
ref
и ключевое слово scoped
. Мы добавили базовую поддержку литералов UTF-8
. Теперь анализ кода предлагает для литералов суффикс u8
вместо метода System.Text.Encoding.UTF8.GetBytes()
или байтового массива с соответствующими символами UTF8
. Кроме того, добавлен набор предупреждений и ошибок компилятора для литералов UTF-8.
В базовую поддержку локальных для файла типов входит распознавание нового синтаксиса, модификатор доступа file
для типов, а также предупреждения и ошибки компиляторами с соответствующими быстрыми исправлениями, например Move class to outer scope, если модификатор file
указан для вложенного класса. Кроме того, добавлено удобное контекстное действие для преобразования общего типа в локальный для файла.
В новой версии Rider может преобразовывать обычные и буквальные строки в сырые. Благодаря этому множество существующих функций стало теперь доступно и для сырых строк.
В новой версии мы добавили предложения по использованию нового синтаксиса C# 11 для шаблонов списков при проверке соответствующих элементов коллекции. Это заменяет привычные проверки длины для коллекций с последующим использованием выражения доступа к индексатору.
Начиная с версии C# 11, можно использовать в интерфейсах модификаторы abstract
и virtual
для статических (static
) членов и использовать такие члены в дженериках с параметрами типа, обусловленными соответствующим интерфейсом. В новой версии Rider можно обрабатывать полиморфные static
-члены так же, как и обычные полиморфные члены:
override
включают в себя также члены интерфейса, поэтому теперь удобно реализовать абстрактные или virtual static
члены. >>>
) Теперь Rider распознает громоздкий шаблон кода, который C#-разработчикам приходится писать для выполнения беззнакового сдвига вправо для типов данных со знаком, и предлагает использовать вместо него оператор беззнакового сдвига (>>>
), который есть в C# 11.
Если вы обрабатываете диапазоны (Spans) символов, то, вероятно, часто пользуетесь методом MemoryExtensions.SequenceEqual
. C# 11 упрощает такие проверки. Теперь диапазоны символов можно просто сравнить с образцами строковых литералов, используя выражения is
или switch
.
Новая версия Rider предлагает использовать выражения is
или switch
вместо многочисленных выражений if
.
ref
и ключевое слово scoped
Начиная с версии C#11, можно объявлять поля ref
внутри ref
struct. Rider поддерживает это новое синтаксическое правило, обеспечивает все необходимые ошибки и предупреждения компилятора, показывает кодовое слово ref
в вариантах автодополнения кода и позволяет инициализировать такие поля в конструкторе.
Rider также знает новое ключевое слово scoped
, которое можно использовать для аргументов и локальных переменных by-ref
или ref struct
. Поддержка включает в себя корректную обработку нового синтаксиса, использование ключевого слова scoped
в автодополнении кода, а также сохранение ключевого слова scoped
при переопределении метода. Кроме того, IDE проверяет совместимость модификаторов scoped
и предлагает быстрые исправления для несоответствующих параметров scoped
при переопределении, реализации интерфейса и преобразовании делегатов.
В C# 11 и .NET 7 были также изменены правила безопасности языка для ссылок ref
. Эти изменения определяют, какие операции доступны для переменных by-ref
и ref struct
, чтобы обеспечить безопасность ссылок в управляемом коде за счет введения полей ref
. Rider учитывает эти изменения и поможет разработчикам найти те части проекта, которые необходимо обновить и аннотировать, используя новое ключевое слово scoped
, при переходе на C# 11 или .NET 7.
В новой версии сделан ряд улучшений языковых вставок.
Мы добавили поддержку языковых вставок с помощью [StringSyntax]
(из .NET 7) и [LanguageInjection]
(из JetBrains.Annotations), а также поддержку комментария команд языковых вставок // lang=<language_name>
.
Теперь языковые вставки можно добавлять в интерполированные строки и конкатенации строк на любом языке — раньше они были доступны только для SQL. Обратите внимание, что при использовании интерполяции или конкатенации строк с произвольными выражениями ошибки синтаксиса игнорируются. Кроме того, поддерживаются языковые вставки в сырых строках C# 11.
Для сырых строк теперь отображается разметка отступа, отделяющая отступ от фактического значения.
Новый значок на полях редактора сообщает пользователям об неявном импорте пространства имен в файлах C# и Razor.
Нажав Alt+Enter, когда курсор находится в соответствующей строке, вы получите полный список неявных импортов и информацию об исходном файле, где находятся соответствующие директивы global using
. Если вы выберете конкретное импортированное пространство имен, Rider переведет вас к месту, где оно объявлено, включая переход к тегам <Using Include="Some.NameSpace" />
в файле проекта .csproj
.
Кроме того, Rider показывает глобальные импорты из _Imports.razor
и позволяет перейти к соответствующим определениям импорта.
Чтобы помочь вам упростить и ускорить процесс разработки, мы ввели для C# сортировку вариантов автодополнения кода с использованием машинного обучения.
В настройках Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion
можно выбрать удобный вам режим работы этой функции:
В .NET 7 были добавлены числовые типы Int128
и UInt128
, поэтому мы обновили предложения автодополнения для спецификатора формата.
Кроме того, мы добавили поддержку типов даты и времени DateOnly
и TimeOnly
из .NET 6, а также для числового типа с плавающей точкой половинной точности Half
, появившегося в .NET 5. Раньше IDE эти типы не поддерживала.
Иногда после рефакторинга выражения, соответствующие шаблону, могут превратиться в тривиальные рекурсивные шаблоны. В этом случае, возможно, не стоит использовать синтаксис рекурсивных шаблонов, поэтому новая версия Rider предлагает действие, преобразующее шаблоны в более простые выражения с сохранением исходной семантики, соответствующей шаблону.
Иногда при написании кода после вызова разработчик практически не получает осмысленных предложений. Это происходит, когда вызов не привел к появлению какого-либо значения, если был вызван метод, возвращающий void
. Обычно, чтобы понять это, нужно выполнить несколько действий в IDE: вернуться назад и перейти к объявлению метода или навести мышь на вызов. В этой версии мы добавили подсказку void
для вызовов такого типа, возвращающих void
. Теперь разработчик сразу получает информацию о типе, который станет результатом вызова. Если принять предложение void
, после вызова будет добавлена точка с запятой, если ее там еще не было.
В Rider 2022.3 появилась функция Hot Reload для приложений Blazor Server. Если вы измените исходный код во время выполнения приложения Blazor Server, Rider предложит применить изменения без перезапуска. (см. желтую панель уведомлений Sources are modified в верхней части текстового редактора). Если вы примете изменения, Rider сразу же обновит приложение, и вы сможете продолжить работу.
По многочисленным просьбам нашего сообщества мы добавили новую конфигурацию IIS Application
для запуска и отладки классических приложений ASP.NET на сервере IIS. Кроме того, мы добавили поддержку для имени команды IIS
из файла launchSettings.json
для приложений ASP.NET Core.
Мы продолжаем улучшать поддержку конечных точек. Теперь средство просмотра правильно распознает и собирает информацию о конечных точках для групп маршрутизации минимального API из ASP.NET Core 7. Это значит, что в дополнение к доступным ранее возможностям, вы можете находить конечные точки, объявленные с помощью API MapGroup()
, переходить к ним и пользоваться умным автодополнением кода.
Для проектов ASP.NET добавлено действие .NET User Secrets.
Теперь Rider автоматически генерирует конфигурацию запуска npm
для веб-проектов JavaScript и TypeScript (.esproj
), на которые ссылается решение (.sln
).
Встроенные подсказки Code Vision теперь доступны для JavaScript и TypeScript. Эти помогают отслеживать использование различных классов, методов, интерфейсов и псевдонимов типов в вашем коде.
Новая версия IDE поддерживает at-правило @supports
, которое связывает блок операторов с условием @supports
. This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.
Мы добавили поддержку сужения типов в шаблонах Angular, что позволяет получать более точную информацию о типе и предлагать более релевантные варианты автодополнения.
Кроме того, Rider теперь исключает папку кэша .angular
из глобального поиска для выдачи более точных результатов.
В новой версии Rider существенно расширена поддержка Unity: появились новые функции, улучшены уже существующие, исправлен ряд ошибок.
Мы добавили поддержку нового пакета Unity — Input System. Rider распознает методы, используемые в качестве обработчиков событий, и больше не показывает их как неиспользуемые. Функция Find Usages для этих методов также работает, показывая, где они используются в коде или в файле .inputactions
.
Очень удобно иметь возможность загрузить игровые ресурсы в среду исполнения. Теперь Rider может помочь выбрать правильный путь в методах Resources.Load
. IDE отображает варианты автодополнения кода по мере ввода и подсвечивает все неизвестные ресурсы, выдавая предупреждения.
Уже некоторое время назад в Rider появилось автодополнение и проверка имен тегов, а в версии 2022.3 добавлена новая поддержка группы методов GameObject.FindWithTag
. IDE обеспечивает автодополнение кода по мере набора и предупреждает, когда разработчик пытается использовать отсутствующий в проекте тег.
В проектах Unity очень важно синхронизировать метафайлы с файлами и папками. Rider 2022.3 предупредит вас, если вы попытаетесь отправить в систему контроля версий метафайл для пустой папки. Еще одна удобная функция работает, когда открыт редактор Unity: Rider предупредит о несохраненных сценах или ассетах, чтобы вы не потеряли изменения при коммите.
Кроме того, мы добавили много мелких улучшений и исправили ошибки: сократили время загрузки очень больших проектов, добавили уведомление о том, что вы пытаетесь редактировать файл пакета, доступный только для чтения, и улучшили функцию Find Usages: теперь она находит методы во вложенных префабах и массивах обработчиков событий.
Что касается поддержки DOTS, новая версия Rider больше не помечает классы, реализующие IBaker
или IAspect
, как неиспользуемые.
Вы можете отключить инспекции именования для сериализованных полей, чтобы они обрабатывались как обычные поля. Мы также исправили ссылки на онлайн-документацию.
Хотим поблагодарить Unity за исправление, позволяющее выполнять отладку игроков на Nintendo Switch.
Rider уже дает возможность добавлять CoreRedirects при переименовании классов или свойств Unreal с помощью рефакторинга Rename. Теперь эта функция работает также для:
UFUNCTION()
USTRUCT()
UENUM
Теперь при выполнении рефакторинга Rename Rider в этих случаях предлагает добавить CoreRedirects.
Если вы согласитесь, соответствующий INI-файл будет автоматически обновлен.
Случайно сломать игру при переименовании чего бы то ни было стало гораздо сложнее!
В Rider 2022.3 появилась новая метрика Code Vision специально для Blueprints. Теперь можно быстро проверить, сколько Blueprints используют функцию BlueprintCallable
, и вызвать список всех использований в контекстном меню Code Vision.
Инструмент Generate GUID в новой версии поддерживает формат Unreal Engine GUID. Если вам нужно быстро сгенерировать GUID, достаточно выбрать в меню Tools | Generate GUID...
, и предварительно будет выбран предпочитаемый шестнадцатеричный формат.
Автоматический импорт для функции автодополнения может сэкономить массу времени. Однако при этом может добавляться неверная директива #include
, и эту проблему сложно обнаружить. Мы приложили много усилий, чтобы доработать эту функцию и исключить попадание нежелательных объектов из системных заголовков в варианты автодополнения через автоматический импорт. По умолчанию системные заголовки не включаются в предложения. Вы можете их включить самостоятельно в меню Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine
.
Мы доработали отображение журналов UnrealBuildTool. В новой версии панель журнала содержит временные отметки и сохраняет журналы предыдущих запусков UnrealBuildTool. Таким образом, вы точно не пропустите никакие предупреждения или ошибки, связанные с конфигурациями проекта.
.uproject
Rider работает с обоими типами проектов на основе Unreal Engine: как .sln
, так и .uproject
. Мы продолжаем улучшать поддержку нативной модели .uproject
, чтобы повысить точность и удобство работы:
.project
, в частности AdditionalRootDirectories
и AdditionalPluginDirectories
; .Build.cs
для модулей разных платформ; .uplugin
и .uproject
при использовании модели проекта .uproject
; .uproject
конфигурации запуска для программ C++ генерируются автоматически. Мы реализовали действие Attach to Unreal Editor для проектов Unreal Engine. Оно позволяет быстро присоединиться к процессу Unreal Engine — вам больше не придется искать нужный процесс вручную. Сейчас присоединиться можно только к тому процессу, к которому подключен UnrealLink, то есть в редакторе Unreal Editor должен быть запущен тот же проект, над которым вы работаете в Rider. В дальнейшем мы планируем дорабатывать эту функциональность.
Теперь Rider 2022.3 можно запустить на компьютерах под управлением Windows и Linux с процессорами ARM64. Поддерживаются все базовые рабочие процессы разработки, включая запуск и отладку приложений .NET и выполнение юнит-тестов. Мы продолжаем совершенствовать и тестировать Rider, чтобы IDE бесперебойно работала на процессорах ARM64, однако сейчас нужно помнить о следующих ограничениях:
Помимо Windows, профилировщик dotMemory теперь доступен в JetBrains Rider на Linux и macOS. Мы добавили два новых режима профилирования: Memory (sampled allocations) и Memory (full allocations)
. Они доступны в виджете Run и в меню Run | Switch profiler configuration. Подробнее о различиях между ними — в справке dotMemory.
Профилировщик можно подключить к запущенному процессу через меню Run и наблюдать за Timeline Graph в реальном времени. Выберите нужный временной интервал и откройте представление Memory Allocation (такое же, как в автономном приложении dotMemory Standalone). Оно позволяет анализировать выделенные объекты и дерево выделения для определенного интервала времени.
К сожалению, сделать снэпшоты памяти в этой версии пока нельзя.
В динамический анализ программы (DPA) добавлены новые инспекции. Они помогают найти различные проблемы с использованием баз данных, в том числе:
Новые инспекции доступны для всех приложений, использующих Entity Framework Core и .NET Data Provider для SQL Server.
В контекстные меню dotCover в редакторе кода и окне Unit Test Coverage добавлено действие Show Covering Tests. При выборе этого действия появляется всплывающее окно со всеми тестами, покрывающими код. Во всплывающем окне можно запустить сессию анализа покрытия.
В новой версии dotCover копирует только сборки и символьные файлы, необходимые для непрерывного тестирования в JetBrains Rider. В результате повышается общая производительность dotCover, особенно на больших проектах, поскольку не приходится копировать рабочую директорию целиком. При необходимости в настройках dotCover можно настроить фильтр файлов для теневого копирования.
Раньше, чтобы проанализировать покрытие кода тестами Unity, нужно было перезапустить движок Unity с включенной поддержкой анализа покрытия. Начиная с этой версии, перезапускать Unity не нужно, а анализ покрытия тестами поддерживается по умолчанию.
Централизованное управление зависимостями (иначе говоря, файл Directory.Packages.props
) — это постоянно развивающаяся функция стека технологий .NET. По мере ее совершенствования управлять решениями становится легче. С появлением функции CPM в Rider разработчикам стало удобнее контролировать зависимости.
Подробнее о централизованном управлении зависимостями, включая советы по использованию функции и информацию о ее ограничениях, — в нашем блоге.
Если вы используете в своих решениях пакеты NuGet с открытым исходным кодом, это может привести к появлению уязвимостей. Чтобы уменьшить риск, мы добавили в Rider функцию выявления уязвимых зависимостей. Если IDE обнаруживает уязвимые зависимости, связанные с использованием пакетов NuGet, появляется всплывающее окно с уведомлением. Подробную информацию можно посмотреть в разделе Security окна Problems. Кроме того, информацию об уязвимых зависимостях, используемых в решении, можно посмотреть в окне NuGet Package Management, выбрав конкретный пакет.
А еще мы улучшили скроллинг списка Packages в окне NuGet.
В Rider 2022.3 появилась поддержка F# 7, исправлен ряд мелких ошибок, добавлены улучшения, делающие работу более комфортной.
Если ввести в новой версии символ <
в комментарии, появится шаблон документации. Кроме того, подсветка синтаксиса и автодополнение кода очень упрощают редактирование документирующих комментариев.
Новое правило автодополнения кода упрощает ввод выражений record
: выделяет поля выведенного типа record
, скрывает уже использованные поля. Кроме того, исправлены ошибки, из-за которых раньше предложения в некоторых случаях не отображались.
Чтобы файлы сигнатур было проще использовать при редактировании кода, мы добавили для их обновления новые быстрые исправления: Update parameter name и Update record field. A huge thanks goes to Florian Verdonck for implementing them!
Это лишь основные улучшения поддержки F#. You can find the full list of F# features included in the 2022.3 release here.
Вот некоторые новые возможности Rider 2022.3 по работе с базами данных:
Подробнее — в блог-посте «Что нового в DataGrip 2022.3»
В новой версии Rider окно IL Viewer может декомпилировать код на разных уровнях языковых конструкций C#. Доступны два уровня C#: верхний уровень, где некоторые синтаксические конструкции упрощены благодаря новым возможностям языка, и нижний уровень, где можно посмотреть эти конструкции без синтаксического сахара.
В Rider 2022.3 доработана подсветка кода и подчеркивания. Из-за различий во внутренней логике Rider раньше конфликтовал с анализаторами стиля кода Microsoft Roslyn, и в результате появлялись перекрытия подсветки или одна и та же подсветка отображалась в разных местах, а подчеркивания дублировались. Теперь для большинства таких случаев различия в логике устранены, а в тех нечастых ситуациях, когда проблема возникает, добавлены ошибки с четкими указаниями по устранению конфликта.
Кроме того, теперь Rider показывает идентификатор Roslyn Analyzer ID и ссылку URL Reference в подсказке Quick Documentation для инспекций, проводимых анализаторами Roslyn Analyzer.
Мы реализовали возможность запуска исполняемых файлов clang-format напрямую, без использования инструмента форматирования Rider. Это обеспечивает полную совместимость с популярным форматтером, а также повышает производительность и расширяет возможности форматирования. Чтобы переключиться со встроенного на внешний запуск файлов clang-format, перейдите в Settings | Editor | Code Style | C++
и выберите Clang-format.
Мы существенно повысили производительность отладчика при отключении параметра Allow property evaluations and other implicit function calls. Теперь он может оценивать гораздо больше выражений из проектов .NET, .NET Framework и .NET Core в режиме без побочных эффектов.
Дерево в проводнике юнит-тестов сделано «ленивым», поэтому оно работает быстрее и меньше загружает память. Раньше все узлы создавались автоматически одновременно с деревом, поэтому при навигации возникали задержки и требовалось очень много памяти. Теперь создаются только узлы, относящиеся к развернутым частям дерево, и производительность заметно выросла.
32-bit
переполнена, и переключиться на версию 64-bit
из Visual Studio. Выполнен рефакторинг команд Solution Wide Analysis и Find usages. По данным внутренних тестов, их производительность выросла в среднем на 20-40%.