Что нового в Rider 2024.1

Rider 2024.1 предлагает новые возможности для отслеживания производительности приложения и сбора ключевых метрик, липкие строки, позволяющие лучше понимать, в какой области кода вы находитесь, и быстрее перемещаться по коду, а также диалог New Project для более быстрой и удобной настройки проекта. Новая версия расширяет возможности отладки, предлагая инструмент визуализации коллекций и отображая время пошаговой отладки между двумя точками останова. Разработчикам игр доступен новый набор функций для популярного инструмента для Unity — Odin Inspector. Мы также реализовали поддержку фреймворка Slate UI для Unreal Engine.

Главное

Окно Monitoring

Новое окно Monitoring

В Rider 2024.1 появилось окно Monitoring, где можно отслеживать производительность приложений .NET и в фоновом режиме собирать ключевые метрики во время их запуска или отладки.

Подробнее

Липкие строки

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

Инструмент визуализации коллекций

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

Подробнее

Обновленный диалог New Project

Мы существенно переработали диалог New Project, стремясь упростить настройку новых проектов. Он обеспечивает комплексную поддержку настройки проектов для .NET и пользовательских параметров шаблонов. Кроме того, теперь целевой SDK и соответствующее приложение MAUI можно установить прямо из диалога.

Подробнее

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

Обновленный диалог New Project

Мы существенно переработали диалог New Project, чтобы максимально упростить настройку новых проектов. Особенности обновленного диалога:

  • поддержка параметров конфигурации проекта, касающихся .NET, например флажка прогрессивных веб-приложений при создании приложения Blazor WASM;
  • поддержка параметров в пользовательских шаблонах проектов;
  • возможность установки целевого SDK вашего решения прямо из диалога;
  • возможность установки соответствующего приложения MAUI из диалога.

Уменьшение масштаба IDE

В предыдущих версиях уже было можно увеличивать и уменьшать одновременно размер всех элементов интерфейса IDE, однако масштаб можно было менять только от 100% до 200% от исходного. В новой версии мы сделали эту настройку более гибкой: теперь размер элементов интерфейса можно уменьшить до 70% от исходного.

Переработанное окно Terminal

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

Переключиться на новый терминал можно в настройках: Settings/Preferences | Tools | Terminal | Enable New Terminal.

Подробнее о новом терминале читайте в блоге IntelliJ IDEA.

Анализ кода

Поддержка С#

Больше преобразований в выражения коллекций

Теперь пользователь будет чаще получать рекомендации преобразовать конструкции исходного кода в выражения коллекций C# 12, например в пустой массив или объявление и инициализацию ImmutableArray.

Инспекция Collection was modified

Мы добавили новую инспекцию Possible 'System.InvalidOperationException: Collection was modified': при итерациях в циклах foreach она предупредит вас о том, что коллекция была изменена, поскольку такие изменения могут вызвать исключения в среде выполнения. При анализе учитываются случаи выхода из цикла после изменения коллекции: в таких ситуациях предупреждение не выдается. Инспекция предлагает соответствующее быстрое исправление, которое позволит моментально устранить проблему.

Обновление функции Generate | Formatting Members

Функция Generate | Formatting Members позволяет создавать шаблонный код, переопределяющий метод ToString() и возвращающий осмысленную строку для ваших типов. Начиная с версии 2024.1, эта функция поддерживает больше типов, например ISpanFormattable, IUtf8SpanFormattable и IFormattable.

Улучшенная поддержка одноразовых ресурсов в асинхронных методах

  • Улучшения аннотации [MustDisposeResource]: теперь при анализе кода C# все ресурсы, возвращенные асинхронными методами, включая ресурсы в обертке Task<IDisposable> и ValueTask<IDisposable>, корректно удаляются, и вам не грозит непреднамеренное удаление самой задачи.
  • Возвращаемые значения типа Task: правильный анализ возвращаемых значений типа Task в версии 2024.1 гарантирует проверку удаления ожидаемого ресурса, включая ресурсы, полученные через .ConfigureAwait(...), .AsTask(), или .Result.

Обновления рефакторинга Change Signature

Вот некоторые улучшения, сделанные в рефакторинге Change Signature:

  • Теперь рефакторинг поддерживает методы Deconstruct. Параметры можно добавлять, удалять, переименовывать, а также менять их порядок. Все эти изменения отражаются и в объявлении метода, и в его использованиях.
  • Автодополнение кода теперь доступно для параметров типа: если нужно указать тип, например, для List<>, с помощью автодополнения удобно выбрать нужный вариант, такой как int.
  • Пространства имен типов автоматически сокращаются при добавлении или обновлении параметров. В результате код после применения рефакторинга становится более чистым и простым. Например, если в диалоге Change Signature указать тип System.Collections.Generic.List<System.Int16>, в итоговом коде он будет автоматически сокращен до List<short>.
  • Теперь рефакторинг поддерживает больше возможностей, появившихся в последних версиях C#, например модификаторы in и ref readonly, а также типы record.

Обновления рефакторинга Make Static

Начиная с этой версии, рефакторинг Make Static поддерживает параметры первичного конструктора. Они появляются в списке Introduce parameters и, чтобы их было проще отличить, обозначаются специальной иконкой. Этот рефакторинг доступен также для локальных функций.

Режим активного использования ресурсов при анализе всего решения

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

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

  • Переименование элементов кода теперь идет быстрее и эффективнее. Эти изменения затрагивают и другие ключевые компоненты Rider, повышая производительность многих функций, в том числе Find Usages.
  • Значительно улучшена производительность рефакторинга Move to Another Type для статических членов при обработке больших классов.

Поддержка библиотеки protobuf-net

В новой версии функция анализа кода поддерживает атрибут ProtoContract и перечисление ImplicitFields, входящие в библиотеку protobuf-net. Их можно использовать, чтобы отметить члены класса, неявно используемые для сериализации. В результате для таких членов больше не будет появляться предупреждение unused members.

Поддержка F#

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

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

Мы добавили постфиксный шаблон new, который создает экземпляры типов и выражения объектов для классов и интерфейсов.

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

Поддержка F# включает в себя и другие новые быстрые исправления и контекстные действия. Подробнее об этих и других изменениях можно прочитать в полных примечаниях к версии на GitHub.

Умная проверка орфографии

Вслед за ReSharper в Rider также обновлена проверка орфографии и грамматики. Новый инструмент поддерживает более 20 языков и находит ошибки как в естественных языках, так и в языках программирования, поддерживаемых Rider (C#, C++, VB.NET), в языках разметки (HTML, XML, XAML) и комментариях.

Отладка .NET

Инструмент визуализации коллекций

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

Время пошаговой отладки

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

Точки останова в строке

Точки останова в строке

Начиная с этой версии, Rider позволяет настроить несколько точек останова в одной строке кода, если она содержит несколько выражений. Используйте для этого соответствующие подсказки или сочетание клавиш (Ctrl + F8).

Переработанный встроенный параметр Run to cursor

В версии 2024.1 параметр Skip to cursor будет работать так же, как в IntelliJ IDEA. Новый встроенный параметр Run to Cursor позволяет в ходе отладки выполнить код до определенной строки. После приостановки выполнения программы наведите курсор мыши на строку, до которой нужно выполнить код. Затем откройте всплывающее окно Run to Cursor и выполняйте код до строки, где находится курсор.

Горячая перезагрузка для Blazor WASM

Теперь при запуске и отладке приложений Blazor WebAssembly (WASM) доступна функция горячей перезагрузки (Hot Reload). Она работает для файлов .cs, .razor .css (включая файлы .razor.css с ограничением области доступа).

Функция включена по умолчанию. Ее можно настроить в меню Settings/Preferences | Build, Execution, Deployment | Hot Reload.

Поддержка дампов процессов .NET

Дампы процессов играют важнейшую роль при отладке, позволяя проанализировать состояние программы при возникновении ошибки, даже если ее не удается воспроизвести. Раньше в Rider обрабатывались только дампы ядра C++. Теперь IDE позволяет импортировать также дампы процессов .NET.

Это можно сделать в меню Run | Debug Core Dump или просто перетащить файл дампа в редактор.

AI Assistant

Explain with AI

Мы добавили новую кнопку Explain with AI рядом с исключением или сообщением об ошибке, вызванным ошибкой в юнит-тесте или сбоем сборки, а также возникшим во время отладки.

Rename with AI

При переименовании локальной переменной в окне автодополнения кода появляются варианты имен, предложенные ИИ.

Плагин AI Assistant

Начиная с версии 2024.1, AI Assistant выведен из состава IDE в отдельный плагин. Мы сделали это для того, чтобы у вас было больше свободы в принятии решений об использовании технологий на основе искусственного интеллекта и больше контроля над собственной рабочей средой. Для использования AI Assistant по-прежнему нужна подписка на JetBrains AI.

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

Unreal Engine

Поддержка C++

Важные улучшения поддержки C++:

  • У Change Signature появились новые возможности, в том числе теперь можно изменить тип параметра на указатель, ссылку или значение.
  • Call Tracking теперь поддерживает цепочки исходящих вызовов.
  • В новой версии легко настроить стиль генерируемых документирующих комментариев. Кроме того, в документирующих комментариях теперь есть инспекции для проверки грамматики.
  • Мы переработали реализацию модулей C++20, в результате повысилась производительность и появилась поддержка внутренних разделов модулей.

Поддержка C++ в Rider основана на движке ReSharper C++. Подробнее об изменениях — на странице Что нового в ReSharper C++ 2024.1.

Стек вызовов отладчика Blueprints

Мы рады сообщить, что в стек вызовов отладчика добавлена поддержка Blueprints. Теперь в стеке вызовов в Rider будет отображаться не анонимный адрес из памяти, а информация о вызове Blueprints, чередующаяся с существующим кодом C++. Обязательно установите новую версию плагина RiderLink!

Форматирование Slate и умная навигация

В новой версии добавлена поддержка фреймворка Slate UI для Unreal Engine: мы научили Rider использовать команды Go to Definition и Find Usages, а также рефакторинг Rename для переименования символов, объявленных макросами Slate.

Теперь Rider корректно форматирует код Slate DSL: как вызванный напрямую в результате переформатирования, так и набранный вручную.

Умные функции Blueprints

Благодаря умной интеграции с возможностями Blueprints новая версия Rider поддерживает добавление Core Redirects при переименовании экземпляра UENUM, а также автодополнение путей ассетов для имен ресурсов в коде C++.

Обновления поддержки Perforce, улучшенное взаимодействие с Visual Studio и другие возможности

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

Кроме того, мы исправили ошибку в UnrealBuildTool, которая иногда приводила к полной пересборке проекта, собранного ранее в Visual Studio. Теперь пользоваться обеими IDE стало гораздо удобнее. Исправление сделано в Unreal Engine 5.4 и во всех версиях Rider.

И не забудьте прочитать обо всех изменениях для C++ в движке ReSharper C++.

Unity

Поддержка Odin Inspector

С огромной радостью сообщаем, что мы вместе с друзьями из Sirenix обеспечили поддержку популярного инструмента для Unity — Odin Inspector. Новая версия Rider распознает и подсвечивает поля и свойства, сериализованные с помощью Odin Inspector, обеспечивает автодополнение и инспекции для имен групп в атрибутах организации окон, а также предпросмотр класса Odin GUIColor. Кроме того, Rider распознает атрибуты диапазона Odin и использует эти значения в своем анализе целочисленных значений, а если значение выходит за пределы диапазона — предупреждает об этом разработчика.

Подробнее

Улучшения вариантов шейдеров

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

Анализ null и проверки времени жизни объектов

Новая версия Rider иначе реагирует на возможные исключения из проверки срока жизни базового объекта игры, когда Unity выполняет сравнение с null. Теперь Rider не будет предупреждать о том, что при проверке null новая версия C# пропускает проверку времени жизни объекта. Вместо этого IDE выделит случаи, когда при сравнении с null эта проверка выполняется.

В ближайшее время мы расскажем об этом подробнее в нашем блоге.

Отладка, индексация ассетов и другие возможности

Отладка стала эффективнее, поскольку теперь Rider обеспечивает более широкую поддержку DOTS, например добавление дочернего узла Entity при анализе экземпляра IJobEntity на панели Watches. Кроме того, обновлены точки паузы — теперь они тоже работают с системами DOTS. Исправлены ошибки в визуализаторе значений отладки текстур, а новый инструмент визуализации коллекций помогает обрабатывать коллекции игровых объектов.

Мы также ускорили обработку ассетов, исправили ошибки в распознавании сериализованных полей, а также внесли много других мелких исправлений и улучшений. Подробнее — в журнале изменений.

Godot

Мы продолжаем расширять поддержку Godot и обновили плагин, который можно установить в настройках на вкладке Plugins. Свежие изменения:

  • Подсветка синтаксиса поддерживает больше типов файлов Godot, в том числе .gd, .tscn, .tres, .godot. Улучшена подсветка для .gdshader.
  • Новая версия Rider автоматически находит правильную среду выполнения .NET для запуска и отладки тестов Godot из launchSettings.json (JetBrains/godot-support#125).
  • Мы добавили на главную панель инструментов кнопку Start Godot Editor, которая работает так же, как действие в Unity (JetBrains/godot-support#119).

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

Разрешение ссылок для директив @addTagHelper и @removeTagHelper

Новая версия Rider умеет обрабатывать имена сборок, указанные в директивах @addTagHelper и @removeTagHelper в представлениях Razor. Благодаря этому пользователям доступны автодополнение кода, поиск использований и удобная навигация по коду.

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

Шаблон файла Blazor Component

Теперь при создании шаблона файла Blazor Component можно сгенерировать дополнительные файлы, например .razor.cs, .razor.css, .razor.js.

Быстрые исправления для создания пропсов и состояний React

В Rider 2024.1 появилось несколько новых быстрых исправлений для React, которые позволяют создавать пропсы и состояния на лету. Применяйте эти исправления с помощью сочетания клавиш Alt + Enter.

Подробнее о новых возможностях для веб-разработки читайте на этой страницe.

Управление версиями

Вот что нового ждет вас при работе с системами контроля версий в Rider:

  • ревью кода в редакторе для репозиториев GitLab и GitHub;
  • проверки статуса CI в окне Git;
  • предотвращение коммитов больших файлов в репозитории;
  • новая вкладка Stash в окне Commit;
  • возможность исключать файлы и папки из сравнения;
  • и многое другое!

Подробно обо всех изменениях читайте здесь.

Работа с базами данных

Некоторые из главных улучшений при работе с базами данных в Rider 2024.1:

  • локальный фильтр в редакторе данных;
  • просмотр отдельной записи;
  • изменение порядка столбцов в CSV-файле;
  • больше возможностей для UUID;
  • выравнивание кода в многострочных выражениях INSERT;
  • автодополнение столбцов для условий GROUP BY.

Подробнее об изменениях в работе с базами данных читайте на этой странице.

Плагины

Плагин .NET Aspire для Rider

.NET Aspire

В .NET 8 SDK появился .NET Aspire. Это новый подход к обработке сложных проблем, связанных со сборкой распределенных приложений на стеке .NET. Стремясь поддержать это новшество, мы предлагаем новый встраиваемый инструмент : плагин .NET Aspire для Rider.

Его можно использовать с Rider 2024.1, скачав с JetBrains Marketplace или через меню Settings/Preferences | Plugins.

Подробнее о .NET Aspire и новом плагине читайте в нашем блоге.

Поддержка Frozen Object Heap (FOH) dotUltimate

Встроенный инструмент профилирования dotMemory теперь поддерживает функцию Frozen Object Heap (FOH), появившуюся в .NET 6 SDK. Это одно из улучшений для процесса сборки мусора.

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

Профилирование производительности и памяти для десктопных приложений MAUI dotUltimate

В новой версии встроенные профилировщики dotTrace и dotMemory поддерживают приложения MAUI и .NET для macOS.

Поддерживаемые целевые фреймворки:

  • MAUI Windows: net8.0-windows, net7.0-windows.
  • MAUI Mac: net8.0-maccatalyst, net7.0-maccatalyst.
  • Приложения macOS: net8.0-macos, net7.0-macos.

Подробнее о доступных режимах профилирования — здесь.

Новый плагин Azure Toolkit

Новый Azure Toolkit для Rider представляет собой плагин с открытым исходным кодом, с помощью которого разработчики .NET могут легко создавать, разрабатывать, настраивать, тестировать и развертывать в Azure веб-приложения с высокой доступностью и широкими возможностями масштабирования.

Плагин можно скачать и установить прямо из JetBrains Rider. Он также доступен в JetBrains Marketplace.

Другие улучшения

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

В этой версии мы расширили поддержку GitHub Actions. Разрабатывая свои решения, мы стремимся расширить возможности ваших CI/CD-процессов, увеличить их эффективность и предложить умные функции, разработанные специально для GitHub Actions.

Улучшения в новой версии:

  • расширенная поддержка автодополнения в различных контекстах GitHub Actions;
  • брендирование для action.yml;
  • автодополнение кода для Docker-образов;
  • автодополнение путей JavaScript-файлов.

Подробнее — в блоге IntelliJ IDEA.

Перетащите файлы проекта на диаграмму зависимостей типов

Улучшения диаграмм зависимостей типов

Диаграммы зависимостей типов впервые появились в версии 2023.3, а в новом релизе мы обновили способы их настройки. Теперь можно:

  • добавить к диаграмме узел с помощью поиска;
  • удалять узлы из просмотра диаграмм;
  • добавлять к определенному типу на диаграмме связанные типы;
  • перетаскивать файлы проекта на диаграмму зависимостей типов.

Подробнее о создании диаграмм зависимостей типов для вашего приложения читайте в нашем блоге.

Поддержка формата пакетов WebCIL для WebAssemblies

Декомпилятор

Функция Assembly Explorer в Rider теперь поддерживает формат пакетов WebCIL для WebAssemblies.

Поддержка включает в себя:

  • декомпиляцию WebCIL;
  • возможность просмотра файлов .wasm в Assembly Explorer;
  • поддеревья метаданных для узлов WASM в Assembly Explorer, включая заголовки WASM и WebCIL.