В Rider 2023.1 улучшена поддержка C#, в том числе добавлен ряд инспекций для оптимизации и ускорения работы с разными типами коллекций, а также новые настраиваемые способы добавления проверок на null. Чтобы в Rider было удобнее разрабатывать игры, в новой версии добавлена поддержка Unity’s Data Oriented Tech Stack (DOTS) и Unreal Engine 5.2, включая недавние обновления формата файлов Blueprints. Кроме того, появилась поддержка Godot 4 и ряд других улучшений, которые наверняка оценят разработчики игр. Еще в новой версии IDE улучшен редактор, инструменты контроля версий и работы с Docker, усовершенствован новый интерфейс и в целом стало гораздо удобнее работать.
Unity постепенно переходит от объектно-ориентированного проектирования к проектированию на основе данных, поэтому в Rider 2023.1 добавлена поддержка многопоточного стека Data Oriented Tech Stack (DOTS). Это совершенно новый подход к разработке игр, снижающий нагрузку на ЦП.
Мы добавили инспекции с быстрыми исправлениями для оптимизации и ускорения работы с коллекциями за счет уменьшения количества объектов Lookup. Например, Rider предложит удалить избыточные проверки Contains
и ContainsKey
или использовать вместо них методы TryAdd
и TryGetValue
.
В новой версии расширена интеграция между Rider и Perforce: мы добавили Perforce в виджет систем контроля версий (VCS). Виджет VCS для Perforce обеспечивает быстрый доступ к основным действиям, таким как Commit, Revert и Update Project. Кроме того, он показывает текущее рабочее пространство и статус соединения.
Во время сеанса отладки теперь можно визуализировать значения строковых переменных HTML, XML, JSON, JWT или URL-кодировки. Просто нажмите на ссылку View рядом со строкой на вкладке Threads & Variables в окне отладчика или на ссылку View, которая появляется при наведении курсора на переменную в редакторе.
Новый набор инспекций с быстрыми исправлениями поможет оптимизировать и ускорить работу с разными типами коллекций за счет уменьшения количества объектов Lookup в коллекциях:
Contains(item)
перед добавлением элемента в HashSet
или другие коллекции, в которых реализован интерфейс ISet
. ContainsKey(key)
перед добавлением элемента в Dictionary
или другие коллекции, в которых реализован интерфейс IDictionary
. TryAdd(key, value)
для коллекций Dictionary
или унаследованных от Dictionary
. TryGetValue(key, out value)
для коллекций IDictionary
, когда это возможно. Чтобы обеспечить единство стиля проверок not null
в шаблонах, мы добавили новую настройку Syntax style. Она предлагает на выбор два варианта: пустой рекурсивный синтаксис шаблона { }
и шаблон с отрицанием not null
, при этом по умолчанию используется последний. Изменить настройки можно в любой момент на вкладке Settings/Preferences | Editor | Code Style | C# | Syntax Style.
При использовании шаблона not null возникает одна сложность: в отличие от рекурсивного шаблона { LastName: { } lastName }
, он не позволяет вставлять имена переменных в качестве проверяемого значения. Мы добавили контекстное действие Add pattern variable поверх шаблона not null
, чтобы можно было найти выражения, которые получают доступ к тому же значению (поскольку мы вводим имя переменной), и заменить вновь введенным именем, консолидировав все случаи доступа к этому значению.
ArgumentNullException.ThrowIfNull
для проверок на null
В .NET 6.0 SDK появился новый API для проверок на null
: ArgumentNullException.ThrowIfNull
. Наш движок анализа кода с самого начала распознавал этот вариант проверок, но использовать этот API в качестве стиля по умолчанию для проверок на null, проводимых Rider, было нельзя.
В версии 2023.1 мы добавили в меню Settings/Preferences | Editor | Code Style | C# | Null checking шаблон ArgumentNullException.ThrowIfNull
.
Если вы активно используете сопоставление свойств с образцом, попробуйте новую инспекцию с быстрым исправлением для извлечения общих элементов из нескольких шаблонов свойств, когда они встречаются в потоке кода. Код, созданный с помощью быстрого исправления Extract common property pattern, поможет сократить количество повторений за счет переноса общих шаблонов свойств в шаблоны более высокого уровня.
Разработчики C# часто используют директиву #region
и сворачивание кода в IDE, чтобы структурировать свой код. В результате рефакторинга некоторые директивы #region
остаются пустыми, и код в свернутом виде может выглядеть странно. Новая инспекция кода позволяет найти пустые директивы #region
в свернутом состоянии и применить быстрое исправление для очистки кода.
span.SequenceEqual(“str”)
В анализ кода теперь добавлена новая инспекция, которая предложит заменить span.SequenceEqual("stringLiteral")
на span is "stringLiteral"
— более аккуратное и удобное синтаксическое решение в C#, чем вызов функции.
Лямбда-выражения в C# могут иметь неявно типизированные параметры и выведенные типы возвращаемых значений. Чтобы сделать код более понятным в сложных сценариях разрешения перегрузки, можно добавить явные типы. Начиная с версии C# 11, можно также добавить спецификацию типа возвращаемого значения в лямбда-выражения.
Для этого мы добавили в версию 2023.1 контекстное действие Insert return type specification. Действие можно применять ко всем областям доступа, включая методы, классы, файлы, проекты или целые решения.
Шаблоны C# or
/and
/not
удобно использовать для компактных проверок значений, но их сложнее распознать, чем такие традиционные выражения, как ||
/&&
/!
. Кроме того, если пропущены скобки, они могут стать причиной ошибок, которые трудно найти. Чтобы с этим было легче справиться, мы добавили новую возможность анализа кода, которая предупреждает о «мертвых» проверках в сложных шаблонах.
Мы продолжаем улучшать поддержку шаблонов списков C# 11. С помощью нового контекстного действия Convert to list pattern можно превратить проверки длины коллекции в шаблон списка. Действие можно использовать в любом контексте, допускающем проверку длины коллекции.
Внедрение Data-Oriented Tech Stack (DOTS) — важнейшее изменение архитектуры Unity. Стек обеспечивает хранение данных компонентов в непрерывных векторах, в результате системы получают к ним доступ и могут изменять их, тратя меньше ресурсов ЦП. Это повышает производительность, особенно при работе с крупными проектами.
В этой версии мы добавили поддержку Unity DOTS, чтобы укрепить репутацию Rider как самой инновационной IDE для разработки игр.
Пользователи Rider 2023.1 получают следующие новые функции:
Подробнее обо всех особенностях работы с DOTS в Rider — в нашем блоге и демо.
Отладку игр под Android можно выполнять через WiFi, но иногда удобнее использовать проводное подключение. Версия Rider 2023.1 поддерживает отладку игр под Android через USB.
В диалоге Attach to Unity Process можно посмотреть, какие проекты запущены на подключенных устройствах, и начать отладку.
Rider 2023.1 автоматически создает временные конфигурации запуска при отладке игрока через диалоговое окно Attach to Unity Process. Благодаря этому проще запустить еще один сеанс отладки. Конфигурацию запуска можно сохранить, чтобы сделать ее постоянной, а также поделиться ею с командой. Это работает для всех поддерживаемых игроков, включая десктопы, мобильные устройства, консоли и USB-устройства (iOS или Android).
Rider уже предлагает пользователям онлайн-документацию для библиотек базового класса .NET и основного API Unity. В новой версии мы добавили также быстрый доступ к онлайн-документации по пакетам реестра Unity, включая DOTS. Ссылки на документацию можно просмотреть, нажав F1 или во всплывающем окне Quick Documentation, которое появляется при наведении курсора на символ.
Как и остальная часть решения, поддержка Unity в Rider локализована на японский, корейский и китайский. Это касается в том числе и той части документации для API Unity и онлайн-справки, для которой доступен перевод.
Начиная с Unity 2022.2, рекомендуется писать UI-расширения для редактора Unity с помощью UI Toolkit. Чтобы помочь вам в этом, мы добавили 3 новых настраиваемых шаблона файлов на основе UI Toolkit: создание окон редактора, секций свойств и пользовательских редакторов инспекторов. Они доступны только в Unity 2022.2 и более поздних версий. IMGUI-версии можно использовать по-прежнему.
Как обычно, мы сделали множество других изменений и улучшений, например, более точное выявление сериализованных полей в коде, включая сложные сценарии с использованием производных типов и атрибута [SerializeReference]
. Кроме того, мы также улучшили поддержку поиска использований C#-кода в анимациях Unity и подсветки методов как обработчиков событий. Мы реализовали также изменение, о котором часто просили пользователи: теперь движок форматирования помещает атрибуты [Header]
на отдельную строку.
Epic Games включили UnrealHeaderTool (UHT) в UnrealBuildTool (UBT) в версиях Unreal Engine 5.1 и 5.2. Rider 2023.1 поддерживают эти изменения, а интеграция UHT в Rider будет работать для новых версий Unreal Engine. Rider также поддерживает свежие обновления формата файлов Blueprints, которые будут включены в Unreal Engine 5.2.
Мы переработали контекстное действие Unreal Class…. Теперь оно предлагает на выбор несколько родительских классов, а также дает возможность указать, является ли класс открытым или закрытым. В целом по внешнему виду и функциональности диалог теперь приближен к своему аналогу в Unreal Engine.
Если файл Blueprint не может быть корректно проанализирован Rider, ошибки анализа теперь отображаются на отдельной вкладке Blueprints в окне Problems View. Это позволяет находить проблемные файлы в нативном окне проводника файловой системы. Каждый случай сопровождается кратким описанием обнаруженной ошибки.
Версия Rider 2023.1 может разбирать сообщения, сгенерированные компилятором Clang при сборке игр Unreal Engine на macOS и Linux. Теперь все предупреждения и ошибки, поступающие от Clang в окно Build Output, распознаются корректно, включая ссылки на файлы. Дважды щелкнув по ссылке, можно перейти к тому месту в коде, которое вызвало ошибку или предупреждение.
Наведя курсор на макрос, можно увидеть в окне подсказки предпросмотр его раскрытия с полной подсветкой синтаксиса и правильным форматированием кода. Макрос можно, как и раньше, раскрыть прямо в редакторе с помощью контекстного действия Substitute macro call, но мгновенный предварительный просмотр упрощает работу.
В новой версии Rider появился встроенный шаблон Live Template UInterface для решений Unreal Engine. Как и существующие шаблоны Live templates UCLASS
, USTRUCT
и UENUM
, UInterface позволяет быстро добавить новый класс интерфейса, соответствующий стандарту Unreal Engine. В результате пользователь экономит время и силы, ведь ему не нужно создавать этот класс вручную.
Теперь пользователь может настроить маппинг для виртуальных и физических директорий шейдеров. Если в проекте игры или движка установлен RiderLink, сведения о сопоставлениях шейдеров можно загрузить из Unreal Engine.
В новой версии плагина Godot для Rider сделаны следующие изменения и улучшения:
res://
, чтобы повысить удобство его использования и область видимости. Для некоторых известных вызовов API, в том числе GD.LoadPackedScene
, автодополнение строковых литералов будет доступно сразу, еще до набора префикса res://
; Добавлен новый флажок Selection в разделе Settings/Preferences | Editor | General | Appearance | Show Whitespaces. Если его установить, Rider будет отображать пробелы в виде маленьких точек только при выделении кода.
Редактор кода в Rider теперь отображает превью цветов и кистей для значений и ссылок в файлах Avalonia XAML (.axaml
) и C#, так же как и в WPF-приложениях.
В Rider теперь можно скрывать подсказки по преобразованию типов для выбранных операторов. Для этого поместите курсор рядом с оператором и нажмите Alt+Enter для вызова контекстного меню, а затем перейдите в Configure Inlay Hints | Type Conversion Hints и выберите действие Hide for….
Или зайдите в Settings/Preferences | Editor | Inlay Hints | C# | Type Conversion Hints, чтобы настроить список операторов, для которых вы хотите скрыть подсказки по преобразованию типов.
Инспекция Typo больше не применяется к хешам и специальным значениям, и IDE не сообщает об их неправильном написании. Это обновление распространяется на следующие значения:
Md5
, Sha1
и Sha256
; Sha384
и Sha512
с префиксом shaNNN-
; JWT
. Как и в случае с NUnit, Rider теперь показывает подсказки имен параметров для атрибутов InlineData
и InlineAutoData
в тестах xUnit.
Теперь при работе с глобальными и экспортированными символами в шаблоне Angular, Rider автоматически добавит импорт для них в ваш компонент, когда вы пользуетесь автодополнением или быстрыми исправлениями.
Rider 2023.1 поддерживает TypeScript в выражениях Vue-шаблонов. Шаблонные выражения Vue теперь синхронизируются с lang=”ts”
при добавлении в script-теги. В результате Rider может лучше обрабатывать TypeScript, предоставляя настройки и рефакторинги, соответствующие тому, что находится внутри тега. Вы могли заметить, что раньше между настройками и рефакторингами для чистых файлов .js
и .ts
были различия. Теперь атрибуты lang будут совпадать.
Rider теперь автоматически преобразовывает строки с одинарными или двойными кавычками в шаблонные литералы всякий раз, когда вы вводите ${
. Это работает как для простых строк, так и для свойств JSX.
Подробнее о новых возможностях для веб-разработки читайте в релизном блог-посте WebStorm 2023.1.
Теперь в Rider можно увеличивать и уменьшать размер всех элементов интерфейса одновременно. Для этого выберите View | Appearance в главном меню и настройте нужный масштаб.
Мы добавили новую опцию, которая позволяет зафиксировать ширину боковых окон инструментов или сохранить возможность их менять. Вы найдете новый флажок Remember size for each tool window в разделе Settings/Preferences | Appearance & Behavior | Tool Windows.
Чтобы вы получали наиболее релевантные и точные результаты поиска, мы продолжаем работу по интеграции машинного обучения в Search Everywhere (двойное нажатие Shift). Как и на вкладках Actions и Files, стандартный алгоритм сортировки на вкладке Classes теперь тоже основывается на машинном обучении.
В новом интерфейсе появилась возможность разделить область с окнами инструментов, чтобы вы могли их расположить, как вам удобно.
Чтобы добавить окно в эту область и разместить его в нижней части, перетащите значок окна вниз по боковой панели и опустите под разделитель. Можно сделать и по-другому: кликните правой кнопкой по значку и в открывшемся меню выберите новое положение окна с помощью действия Move to.
Для удобства работы на небольших экранах, мы добавили компактный режим, в котором новый интерфейс Rider выглядит более аккуратно и лаконично: мы сузили панели инструментов и заголовки окон, сократили отступы и интервалы, а также уменьшили кнопки и значки.
Чтобы включить компактный режим, войдите в меню View и выберите Appearance | Compact Mode.
Мы реализовали в новом интерфейсе один из самых популярных запросов — вкладки проектов для пользователей macOS. Если у вас открыто несколько проектов, теперь можно легко переключаться между ними с помощью вкладок, расположенных под главной панелью инструментов.
Мы добавили в новый интерфейс опцию Show Hidden Tabs. На панели вкладок теперь есть выпадающий список, в котором перечислены все открытые вкладки. Раньше они могли быть скрыты.
Мы изменили дизайн виджета Run в заголовке главного окна и использовали более спокойные цвета, чтобы он не бросался в глаза.
В Rider 2023.1 мы усовершенствовали процесс ревью кода в IDE. Проведенные исследования показывают, что в тех случаях, когда пользователям необходимо просмотреть код, они обычно переключаются между GitHub и IDE. Мы упростили этот процесс, переработав окно Pull Requests.
Теперь там есть отдельная вкладка для каждого пул-реквеста, на которой отображается только основная информация. Это помогает пользователям сосредоточиться на текущей работе. Кроме того, мы добавили кнопку, которая позволяет быстро выполнить действие, которое считается наиболее подходящим, исходя из текущего состояния пул-реквеста.
В Rider 2023.1 работает автодополнение во всплывающем окне Create New Branch. Как только вы начнете вводить имя новой ветки, IDE предложит подходящие префиксы на основе имен существующих локальных веток.
Всплывающее окно Branches стало более удобным. В частности, вам будет проще перемещаться между ветками, потому что теперь они сгруппированы и хранятся в раскрываемых списках.
Schema Compare — важный инструмент для разработки и обслуживания баз данных. Он позволяет сравнивать две базы данных, чтобы быстро находить различия между ними, обеспечивать отсутствие несоответствий и поддерживать данные в актуальном состоянии.
Rider 2023.1 поддерживает Schema Compare для подключенных баз данных, проектов баз данных SQL Server и файлов .dacpac
. Чтобы начать сравнение, кликните правой кнопкой по файлу проекта базы данных в Solution Explorer и выберите Schema Compare….
Мы добавили специальное окно, в котором можно просматривать и редактировать файлы Schema Compare (.scmp
). Кроме того, в окне Problems View теперь будут отображаться проблемы, выявленные в ходе сравнения баз данных, а также те, что были обнаружены при проверке модели базы данных.
Важно: реализация Schema Compare в Rider основана на SQL Server Data Tools, и поэтому на вашем компьютере обязательно должна быть установлена Microsoft Visual Studio (версия 2017 или новее).
Теперь проекты Docker можно запускать в Rider в режиме Fast. Раньше его можно было использовать только при отладке. Кроме того, мы расширили набор файлов Dockerfile
, для которых работает этот режим. И наконец, мы сделали режим Fast еще более быстрым за счет извлечения Docker-образов и их проверки во время запуска решения.
Rider 2023.1 может автоматически генерировать конфигурации запуска Docker Compose из файлов проекта .dcproj
при открытии решения. Кроме того, новая версия IDE может сгенерировать конфигурацию запуска Dockerfile
, если указано свойства проекта DockerfileFile или если в файл launchSettings.json
включен профиль Docker.
Для дополнительной настойки можно указать свойства httpPort
, sslPort
, publishAllPorts
и useSSL
в профиле настроек запуска.
При развертывании приложения в Docker в режиме Fast необходимо обмениваться сгенерированными HTTPS-сертификатами между хостом и контейнером. Мы автоматизировали этот шаг, добавив опцию Share generated SSL certificate для конфигураций запуска Docker. Обмен доверенными сертификатами возможен только в Windows и macOS. В Linux придется вручную добавить сертификат в список доверенных сертификатов.
Теперь можно добавить Docker Compose для проекта, чтобы с легкостью работать с несколькими контейнерами одновременно. Для этого вызовите контекстное меню проекта и выберите Add | Docker Compose File, чтобы сгенерировать:
docker-compose.yml
в папке Solution Items над всеми проектами в дереве; docker-compose.yml
. Журналы всех контейнеров Docker Compose теперь собраны в одном месте — на вкладке Dashboard в узле Docker Compose, где они обновляются в реальном времени.
Теперь вы можете легко подключиться к реестру контейнеров Azure. Перейдите в Settings/Preferences | Build, Execution, Deployment | Docker | Docker Registry и выберите опцию Docker V2 в поле Registry.
Иногда бывает нужно запустить приложение в среде выполнения, установленной в пользовательской папке. Для такого случая мы добавили опцию Add Custom Runtime для настройки Runtime на странице Run/Debug Configurations.
Мы также добавили пути к версиям среды выполнения по умолчанию в выпадающем списке Runtime.
Кроме того, в Rider 2023.1 появилась поддержка команды DebugRoslynComponent
из файла launchSettings.json
, чтобы вам было проще отлаживать компоненты Roslyn.
В новой версии легко повторно подключить отладчик Rider к последнему процессу, к которому он был подключен. Просто откройте Run | Reattach to Process... в главном меню или с помощью сочетания клавиш Ctrl+Alt+Shift+F5. Действие становится доступно после первого сеанса отладки.
В Rider теперь можно отлаживать код запуска .NET-приложений WebAssembly (WASM). Раньше WASM-отладчик подключался только после инициализации приложения, поскольку ему требовалось время на вычисление портов, инициализацию соединений и т. д. Эта задержка делала невозможной отладку кода запуска.
Теперь Rider дожидается инициализации цели страницы, подключает отладчик и только после этого начинает фактическую загрузку приложения. Это позволяет поймать точки останова, заданные на ранних этапах логики инициализации приложения.
Когда вы начинаете сеанс отладки приложения ASP.NET Core в Rider, IDE открывает новое окно или вкладку в браузере. Раньше при запуске нескольких сеансов отладки открывалось несколько вкладок, которые приходилось закрывать вручную.
Начиная с версии 2023., при отладке приложений ASP.NET Core с включенным JavaScript-отладчиком Rider будет автоматически закрывать соответствующую вкладку браузера в момент остановки процесса.
Мы добавили новые постфиксные шаблоны match
, for
и with
, чтобы помочь вам с написанием нужного шаблонного кода.
При начале ввода нового выражения match
функция предлагает генерировать все варианты значений union
, enum
, bool
и кортежа.
Мы добавили поддержку регулярных выражений в строковых литералах F# (большую помощь в этом нам оказал Сол Реннисон). При передаче параметров строки с аннотацией [RegexPatternAttribute]
или [StringSyntax(StringSyntaxAttribute.Regex)]
, или когда рядом со строковым литералом есть комментарий //language=regex
, Rider обработает такие строки как регулярные выражения и подсветит синтаксис и ошибки. Кроме того, для регулярных выражений работает автодополнение кода.
match
. Полный список обновлений и исправлений для F# можно посмотреть здесь.
В Rider 2023.1 мы представляем результаты первого этапа перевода IDE на китайский (упрощенный), корейский и японский языки. Локализация частично затронула интерфейс, инспекции кода, меню Alt+Enter, окна инструментов и уведомления, включая те, что связаны с поддержкой Unity и Unreal Engine.
Чтобы начать пользоваться локализованной версией, перейдите в Settings/Preferences | Plugins и найдите в списке плагин с нужным языковым пакетом, установите его и перезапустите Rider. Вы также можете скачать плагин для китайского, корейского или японского языка с сайта JetBrains Marketplace и установить его в разделе Settings/Preferences | Plugins | ⚙️ | Install Plugin from Disk.
Мы добавили действие Trigger Continuous Testing, и вы можете задать для него сочетание клавиш. Действие позволяет запускать непрерывное тестирование напрямую, тогда как раньше это можно было сделать это только косвенно, выполняя сборку или сохранение проекта.
Чтобы назначить сочетание клавиш, перейдите в Preferences/Settings | Build, Execution, Deployment | Unit Testing | Continuous Testing, выберите Trigger Continuous Testing on... и укажите удобные для вас клавиши.
Готов новый плагин для Rider с начальной поддержкой Astro. Его можно скачать с JetBrains Marketplace или установить прямо из IDE в разделе Preferences/Settings | Plugins.
Плагин предоставляет базовую функциональность, включая подсветку синтаксиса, автодополнение кода с автоимпортами, рефакторинги, навигацию, intention-действия, сворачивание кода, поддержку Emmet и правильное форматирование.
В новой версии вас ждет много улучшений и исправлений, связанных с навигацией по коду. Теперь на панели Structure показываются наследуемые члены, а также мы вернули отображение членов классов декомпилированного кода.
Когда инициируется команда Go to File Member, новая версия Rider использует всплывающее окно Structure view из IntelliJ IDEA. Вы сможете посмотреть структуру файла и символы из скомпилированных базовых типов. Во всплывающем окне предусмотрена группировка, чтобы можно было быстро определить, где находится каждый элемент.
Reformat inactive preprocessor branches in file — это новый тип задания для очистки кода, который мы реализуем в Rider 2023.1. Задание позволяет переформатировать неактивные ветки препроцессинга. Его можно применять только ко всему файлу сразу и оно доступно только для исходных файлов на C#.
Задание не может менять форматирование кода, скрытого за директивой препроцессора #if
, которая всегда ложна. Вот два наиболее очевидных примера этого ограничения: #if false ... #endif
и #define A #if !A ... #endif
.
Фильтры текстового поиска, применяемые к деревьям юнит-тестов в окнах Unit Tests и Unit Test Coverage, теперь учитываются при запуске тестов с помощью кнопок Run на панели инструментов. В списки включаются и затем выполняются только тесты, удовлетворяющие критериям поиска.
Мы улучшили процедуру переименования файлов в проекте. Начиная с этой версии Rider, при переименовании файла внутри решения будет появляться диалог с возможностью переименования всех связанных символов (классов, интерфейсов и т. д.) в соответствии с изменениями.