Что нового в Rider

Rider 2022.3 обеспечивает поддержку .NET 7 SDK, включая новые возможности C# 11. В новой версии значительно повышена производительность. Особое внимание было уделено сокращению времени запуска, а также возможности запуска Rider на WSL 2 (Windows Subsystem for Linux 2) в режиме удаленной разработки. Кроме того, мы существенно доработали интерфейс, в частности, добавили возможность закреплять расположение окон при использовании нескольких мониторов. И наконец, в этой версии расширена интеграция с редакторами Unity и Unreal.

Производительность

Производительность

Мы внесли некоторые изменения, чтобы ускорить запуск Rider и сократить время ожидания, пока IDE откроется, и можно будет приступить к работе:

  • теперь установщик Rider может добавлять исполняемые файлы в список исключений Windows Defender, значительно ускоряя запуск;
  • новая версия Rider может загрузить файл решения и сразу же выстроить по нему дерево проекта, не дожидаясь инициализации бэкенда;
  • из Solution Explorer убраны все полосы загрузки, поэтому интерфейс стал проще; начиная с этой версии, все полосы загрузки будут отображаться в строке состояния IDE Status;
  • мы добавили новый парсер C#, который при запуске Rider обеспечивает подсветку основного синтаксиса, а после загрузки решения — полный набор функций;
  • мы также повысили производительность бэкенда Rider. We’ve enabled server garbage collection (GC) to get better memory throughput for the backend process. Кроме того, мы обновили среду исполнения языковой службы бэкенда Rider: с .NET 6 до новой версии .NET 7. И наконец, теперь сборки, созданные на этапе проектирования, запускаются параллельно, если проекты не связаны между собой. Все эти изменения вместе позволили заметно ускорить загрузку решения, включающего несколько проектов.

Подробнее об улучшениях производительности Rider читайте здесь.

Поддержка WSL 2

Новая версия Rider поддерживает WSL 2 (Windows Subsystem for Linux 2) благодаря функции удаленной разработки в IDE. Иначе говоря, вы можете запустить Rider в WSL 2, чтобы просматривать ваши решения и источники, а также выполнять сборку, отладку и запуск приложений, как если бы они хранились локально.

Простой процесс установки можно запустить прямо на начальном экране Rider. Функция удаленной разработки обеспечивает пользовательский интерфейс, поэтому WSLg не требуется, а локальный клиент RemoteDev устанавливается автоматически. Подробнее — в документации по удаленной разработке.

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

Закрепление окон инструментов

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

Улучшенные результаты поиска Search Everywhere

Мы усовершенствовали алгоритм выдачи результатов поиска Search Everywhere: его поведение стало более предсказуемым, а результаты точнее соответствуют критериям поиска. Теперь при вводе запроса IDE фиксирует первые появившиеся результаты и не пересортировывает их по мере нахождения новых вариантов, как это было раньше.

Новый диалог Attach to process

Чтобы работать было удобнее, особенно при присоединении к процессу через SSH, мы добавили новый диалог Attach to process. Мы хотим, чтобы вы быстрее находили и выбирали нужный процесс, а IDE запоминала выбранный отладчик.

Переработанная функция вставки

Переработанная функция вставки

Мы повысили удобство редактирования, переработав поведение функции вставки (⌘V / Ctrl+V). Теперь, если скопировать (⌘C / Ctrl+C) или вырезать (⌘X / Ctrl+X) строку без выделенного кода, содержимое буфера обмена будет вставляться не там, где стоит курсор, а строкой выше.

Вставка JSON как классов

Вставка JSON как классов

Новое действие Edit | Paste Special: JSON as Classes обеспечивает «умную вставку» объектов. Например, если вы скопировали фрагмент кода JSON и вставили его с помощью этого действия, на основе вставленного кода будут автоматически созданы классы C#.

Новый интерфейс Ранний доступ

Предлагаем вам попробовать переключиться на новый интерфейс IDE на платформе IntelliJ в меню Preferences/Settings | Appearance & Behavior | New UI Preview. Новый интерфейс стал результатом нашего стремления визуально упростить IDE, чтобы вы могли сосредоточиться на работе.

Другое

Кроме того, мы внедряем новые небольшие изменения в интерфейс и порядок работы с Rider, чтобы сделать IDE более удобной:

  • теперь в меню Add отображаются только пункты, касающиеся текущего решения или проекта;
  • действие Open in Terminal перенесено в контекстное меню Solution Explorer;
  • пункт File | New в верхнем меню теперь называется File | New Solution — это точнее соответствует выполняемому действию;
  • добавлено действие для переключения между решениями в Solution Explorer. При клике правой кнопкой на любом решении, кроме активного в этот момент, появляется контекстное меню. Если в нем нажать Open, открывается выбранное решение, а текущее решение одновременно закрывается.

Поддержка .NET 7 SDK

Поддержка .NET 7 SDK

В Rider 2022.3 появилась поддержка .NET 7 SDK, включая:

  • Обновленные шаблоны проектов.
  • Централизованное управление зависимостями NuGet.
  • Поддержку групп маршрутизации минимального API из ASP.NET в окне Endpoints.
  • Новые возможности C# 11, в том числе локальные для файлов типы, литералы UTF-8, поля ref и ключевое слово scoped.
  • Создание/запуск/отладку проектов, использующих новый SDK в качестве целевого.

Поддержка C#

C# 11

Литералы UTF-8

Литералы UTF-8

Мы добавили базовую поддержку литералов 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#

Значок Global imports на полях редактора

Значок Global imports на полях редактора

Новый значок на полях редактора сообщает пользователям об неявном импорте пространства имен в файлах C# и Razor.

Нажав Alt+Enter, когда курсор находится в соответствующей строке, вы получите полный список неявных импортов и информацию об исходном файле, где находятся соответствующие директивы global using. Если вы выберете конкретное импортированное пространство имен, Rider переведет вас к месту, где оно объявлено, включая переход к тегам <Using Include="Some.NameSpace" /> в файле проекта .csproj.

Значок Global imports на полях редактора

Кроме того, Rider показывает глобальные импорты из _Imports.razor и позволяет перейти к соответствующим определениям импорта.

Автодополнение на основе машинного обучения для C#

Автодополнение на основе машинного обучения для C#

Чтобы помочь вам упростить и ускорить процесс разработки, мы ввели для 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

Подсказки автодополнения кода для выражений, возвращающих void

Иногда при написании кода после вызова разработчик практически не получает осмысленных предложений. Это происходит, когда вызов не привел к появлению какого-либо значения, если был вызван метод, возвращающий void. Обычно, чтобы понять это, нужно выполнить несколько действий в IDE: вернуться назад и перейти к объявлению метода или навести мышь на вызов. В этой версии мы добавили подсказку void для вызовов такого типа, возвращающих void. Теперь разработчик сразу получает информацию о типе, который станет результатом вызова. Если принять предложение void, после вызова будет добавлена точка с запятой, если ее там еще не было.

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

Blazor

Blazor

В Rider 2022.3 появилась функция Hot Reload для приложений Blazor Server. Если вы измените исходный код во время выполнения приложения Blazor Server, Rider предложит применить изменения без перезапуска. (см. желтую панель уведомлений Sources are modified в верхней части текстового редактора). Если вы примете изменения, Rider сразу же обновит приложение, и вы сможете продолжить работу.

Начальный экран

Службы IIS

По многочисленным просьбам нашего сообщества мы добавили новую конфигурацию IIS Application для запуска и отладки классических приложений ASP.NET на сервере IIS. Кроме того, мы добавили поддержку для имени команды IIS из файла launchSettings.json для приложений ASP.NET Core.

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

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

Мы продолжаем улучшать поддержку конечных точек. Теперь средство просмотра правильно распознает и собирает информацию о конечных точках для групп маршрутизации минимального API из ASP.NET Core 7. Это значит, что в дополнение к доступным ранее возможностям, вы можете находить конечные точки, объявленные с помощью API MapGroup(), переходить к ним и пользоваться умным автодополнением кода.

.NET User Secrets

.NET User Secrets

Для проектов ASP.NET добавлено действие .NET User Secrets.

Веб-проекты JavaScript/TypeScript

Веб-проекты JavaScript/TypeScript

Теперь Rider автоматически генерирует конфигурацию запуска npm для веб-проектов JavaScript и TypeScript (.esproj), на которые ссылается решение (.sln).

Code Vision для JavaScript и TypeScript

Code Vision для JavaScript и TypeScript

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

Поддержка CSS

Поддержка CSS

Новая версия 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

Обновления для Angular

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

Кроме того, Rider теперь исключает папку кэша .angular из глобального поиска для выдачи более точных результатов.

Разработка игр

Поддержка Unity

В новой версии 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.

Поддержка Unreal Engine

Переименование с использованием CoreRedirects

Rider уже дает возможность добавлять CoreRedirects при переименовании классов или свойств Unreal с помощью рефакторинга Rename. Теперь эта функция работает также для:

  • Переименования UFUNCTION()
  • Переименования USTRUCT()
  • Переименования UENUM

Теперь при выполнении рефакторинга Rename Rider в этих случаях предлагает добавить CoreRedirects.

Если вы согласитесь, соответствующий INI-файл будет автоматически обновлен.

Случайно сломать игру при переименовании чего бы то ни было стало гораздо сложнее!

Обновленная метрика Code Vision для Blueprints

В Rider 2022.3 появилась новая метрика Code Vision специально для Blueprints. Теперь можно быстро проверить, сколько Blueprints используют функцию BlueprintCallable, и вызвать список всех использований в контекстном меню Code Vision.

Generate GUID

Инструмент Generate GUID в новой версии поддерживает формат Unreal Engine GUID. Если вам нужно быстро сгенерировать GUID, достаточно выбрать в меню Tools | Generate GUID..., и предварительно будет выбран предпочитаемый шестнадцатеричный формат.

Автоматический импорт

Автоматический импорт для функции автодополнения может сэкономить массу времени. Однако при этом может добавляться неверная директива #include, и эту проблему сложно обнаружить. Мы приложили много усилий, чтобы доработать эту функцию и исключить попадание нежелательных объектов из системных заголовков в варианты автодополнения через автоматический импорт. По умолчанию системные заголовки не включаются в предложения. Вы можете их включить самостоятельно в меню Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine.

Журнал UnrealBuildTool

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

Нативная поддержка .uproject

Rider работает с обоими типами проектов на основе Unreal Engine: как .sln, так и .uproject. Мы продолжаем улучшать поддержку нативной модели .uproject, чтобы повысить точность и удобство работы:

  • Rider 2022.3 учитывает дополнительные расположения источников, указанные в файле .project, в частности AdditionalRootDirectories и AdditionalPluginDirectories;
  • IDE также поддерживает пользовательские программы, размещенные в месте расположения игры, и корректно генерирует файлы проектов для всех программ;
  • новая версия Rider поддерживает модули с несколькими файлами .Build.cs для модулей разных платформ;
  • новая версия поддерживает автодополнение кода и инспекции в файлах .uplugin и .uproject при использовании модели проекта .uproject;
  • теперь при использовании модели .uproject конфигурации запуска для программ C++ генерируются автоматически.

Присоединение к Unreal Editor

Мы реализовали действие Attach to Unreal Editor для проектов Unreal Engine. Оно позволяет быстро присоединиться к процессу Unreal Engine — вам больше не придется искать нужный процесс вручную. Сейчас присоединиться можно только к тому процессу, к которому подключен UnrealLink, то есть в редакторе Unreal Editor должен быть запущен тот же проект, над которым вы работаете в Rider. В дальнейшем мы планируем дорабатывать эту функциональность.

Поддержка ARM64 Ранний доступ

Ранняя поддержка ARM64

Теперь Rider 2022.3 можно запустить на компьютерах под управлением Windows и Linux с процессорами ARM64. Поддерживаются все базовые рабочие процессы разработки, включая запуск и отладку приложений .NET и выполнение юнит-тестов. Мы продолжаем совершенствовать и тестировать Rider, чтобы IDE бесперебойно работала на процессорах ARM64, однако сейчас нужно помнить о следующих ограничениях:

  • в настоящее время мы не планируем поддержку разработки для Unreal Engine под Windows на ARM64, поскольку компания Epic Games не поддерживает Unreal Engine для этой архитектуры;
  • поддержка Unreal Engine для Linux на ARM64 находится в разработке;
  • доступна базовая поддержка проектов Visual C++ под Windows на ARM64, но она не включает в себя отладку приложений нативной сборки. Подробнее о том, как решается эта проблема, — здесь.

Плагины

Профилирование памяти на macOS и Linux dotUltimate

Помимо 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 dotUltimate

Динамический анализ программы

Быстрая навигация к тестам

В контекстные меню dotCover в редакторе кода и окне Unit Test Coverage добавлено действие Show Covering Tests. При выборе этого действия появляется всплывающее окно со всеми тестами, покрывающими код. Во всплывающем окне можно запустить сессию анализа покрытия.

Ускоренное теневое копирование

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

Улучшенная поддержка Unity

Раньше, чтобы проанализировать покрытие кода тестами Unity, нужно было перезапустить движок Unity с включенной поддержкой анализа покрытия. Начиная с этой версии, перезапускать Unity не нужно, а анализ покрытия тестами поддерживается по умолчанию.

Поддержка NuGet

Централизованное управление зависимостями (иначе говоря, файл Directory.Packages.props) — это постоянно развивающаяся функция стека технологий .NET. По мере ее совершенствования управлять решениями становится легче. С появлением функции CPM в Rider разработчикам стало удобнее контролировать зависимости.

Подробнее о централизованном управлении зависимостями, включая советы по использованию функции и информацию о ее ограничениях, — в нашем блоге.

Если вы используете в своих решениях пакеты NuGet с открытым исходным кодом, это может привести к появлению уязвимостей. Чтобы уменьшить риск, мы добавили в Rider функцию выявления уязвимых зависимостей. Если IDE обнаруживает уязвимые зависимости, связанные с использованием пакетов NuGet, появляется всплывающее окно с уведомлением. Подробную информацию можно посмотреть в разделе Security окна Problems. Кроме того, информацию об уязвимых зависимостях, используемых в решении, можно посмотреть в окне NuGet Package Management, выбрав конкретный пакет.

А еще мы улучшили скроллинг списка Packages в окне NuGet.

Поддержка F#

В Rider 2022.3 появилась поддержка F# 7, исправлен ряд мелких ошибок, добавлены улучшения, делающие работу более комфортной.

Улучшенная поддержка XML-документации

Улучшенная поддержка XML-документации

Если ввести в новой версии символ < в комментарии, появится шаблон документации. Кроме того, подсветка синтаксиса и автодополнение кода очень упрощают редактирование документирующих комментариев.

Автодополнение для записей

Автодополнение для записей

Новое правило автодополнения кода упрощает ввод выражений 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 по работе с базами данных:

  • быстрый фильтр: можно отфильтровать результаты быстрого поиска и скрыть несоответствующие объекты;
  • фильтрация схем на основе шаблона: теперь можно выбирать базы данных или схемы для интроспекции на основе шаблонов регулярных выражений;
  • форматы полей даты/времени: теперь можно настроить формат типов даты и времени в редакторе данных;
  • многострочное редактирование в окне Modify: теперь можно редактировать одновременно несколько объектов.

Подробнее — в блог-посте «Что нового в DataGrip 2022.3»

Разное

Просмотрщик IL

Просмотрщик IL

В новой версии Rider окно IL Viewer может декомпилировать код на разных уровнях языковых конструкций C#. Доступны два уровня C#: верхний уровень, где некоторые синтаксические конструкции упрощены благодаря новым возможностям языка, и нижний уровень, где можно посмотреть эти конструкции без синтаксического сахара.

Подсветка кода

Подсветка кода

В Rider 2022.3 доработана подсветка кода и подчеркивания. Из-за различий во внутренней логике Rider раньше конфликтовал с анализаторами стиля кода Microsoft Roslyn, и в результате появлялись перекрытия подсветки или одна и та же подсветка отображалась в разных местах, а подчеркивания дублировались. Теперь для большинства таких случаев различия в логике устранены, а в тех нечастых ситуациях, когда проблема возникает, добавлены ошибки с четкими указаниями по устранению конфликта.

Кроме того, теперь Rider показывает идентификатор Roslyn Analyzer ID и ссылку URL Reference в подсказке Quick Documentation для инспекций, проводимых анализаторами Roslyn Analyzer.

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

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

Мы реализовали возможность запуска исполняемых файлов 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 в режиме без побочных эффектов.

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

Дерево в проводнике юнит-тестов сделано «ленивым», поэтому оно работает быстрее и меньше загружает память. Раньше все узлы создавались автоматически одновременно с деревом, поэтому при навигации возникали задержки и требовалось очень много памяти. Теперь создаются только узлы, относящиеся к развернутым частям дерево, и производительность заметно выросла.

MSBuild

  • Мы включили сборку мусора на сервере по умолчанию для MSBuild в .NET Core 17+.
  • Новая версия Rider может обнаружить, когда память версии MSBuild 32-bit переполнена, и переключиться на версию 64-bit из Visual Studio.

Производительность

Выполнен рефакторинг команд Solution Wide Analysis и Find usages. По данным внутренних тестов, их производительность выросла в среднем на 20-40%.