Что нового в Rider

Rider 2021.1 позволит вам с легкостью добавить в проект поддержку Docker. Вы сможете подключать .NET-процессы прямо с начального экрана и управлять процессом отладки с помощью подсказок отладчика. Для разработчиков ASP.NET мы добавили возможности кодогенерации, в том числе для Identity и “CRUD” Entity Framework, и поддержали анализ шаблонов маршрута. Мы существенно обновили поддержку C#, на этот раз в основном затронув конструкции и типы Record.

Поддержка Docker

Поддержка Docker

Включить поддержку Docker в проект стало проще — вы можете сгенерировать Dockerfile еще при создании проекта. Если вы выбрали веб-приложение ASP.NET Core, Worker Service или консольное приложение, вам достаточно отметить Docker Support в окне New project.

Если вы хотите включить Dockerfile в существующий проект, откройте контекстное меню проекта в Solution Explorer и выберите Add | Docker Support.

Dockerfile

Rider теперь умеет запускать файлы Dockerfile, сгенерированные Visual Studio. Вам не нужно никак модифицировать Dockerfile — он и так будет совместим с Rider.

Подробнее о генерации Dockerfile для .NET-приложений в Rider читайте в нашем блоге.

Поддержка C#

Больше шаблонов для объединения

Инспекция Merge into pattern теперь охватывает больше шаблонов.

Объединяйте проверки на null с другими проверками в единый шаблон.

Переделывайте выражения conditional?.Access во вложенные сопоставления шаблонов.

Сокращайте вложенные операторы if, объединяя проверки.

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

Расширение поддержки C# 9.0

Мы расширили поддержку типов Record (из C# 9.0).

Для объявлений типов Record теперь работают рефакторинги Extract interface и Extract superclass, а также File Layout и различные возможности, связанные с XML-документацией.

Мы добавили ряд новых инспекций и действий. Использование Redundant explicit property declaration для свойств в объявлениях типов Record поможет при переходе на код, использующий типы Record с позиционными параметрами и неявными объявлениями свойств. Есть и соответствующее быстрое исправление — Remove explicit property.

Соблюсти порядок также поможет инспекция Redundant 'record' type declaration body (и соответствующее быстрое исправление). Она позволяет заменять пустое тело объявления Record на точку с запятой.

  • Если вам захочется превратить Record в класс, используйте действие To class, которое позаботится о позиционных параметрах и первичном конструкторе. Также есть действие To record, работающее противоположным образом.
  • Если вам нужно превратить позиционные параметры и первичный конструктор в обычные свойства, конструктор и явный метод Deconstruct(), вы можете использовать контекстное действие To explicit constructor.
  • Действие Find usages теперь умеет находить использования первичного конструктора Record и неявного метода Deconstruct().

Встраивание временной переменной

Представляем вам новую инспекцию Inline temporary variable.

Иногда может оказаться, что вы используете одно и то же значение под разными именами. Хотелось бы сделать такой код более прозрачным — возможно ли это? Возможно! И Rider поможет вам в этом. Он даже поможет вам отследить ошибки в случае, если временная переменная должна была проинициализироваться другим значением или изменить значение при дальнейшем исполнении.

Переименование в кортежах

Именованные кортежи появились еще в C# 7. Однако переименовывание компонент кортежей все это время делалось вручную. Мы решили положить этому конец и создали специальный рефакторинг.

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

Логические конструкции not делают проверки типов более читаемыми. Rider предлагает замену синтаксиса !() на конструкцию not.

Мы сделали первые шаги в сторону поддержки C# 10.0 и научили Rider работать с интерполяцией константных строк.

  • Вместо Slice и Substring Rider теперь предлагает использовать оператор диапазона, если это позволяет упростить код.
  • Мы отключили инспекцию Namespace does not correspond to file location для файлов с кодом верхнего уровня.
  • Появилась инспекция, проверяющая, можно ли заменить автосвойство на вычисляемое свойство, и соответствующее быстрое исправление для выполнения замены.

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

Кодогенерация для ASP.NET

Хорошие новости для тех, кто работает с ASP.NET MVC, ASP.NET Web API или Razor Pages! Мы добавили механизм кодогенерации для проектов ASP.NET Core.

Rider поддерживает генерацию областей, контроллеров, Razor Pages, представлений и Identity, включая генерацию шаблонного кода для CRUD-операций, необходимых при использовании Entity Framework.

Функциональность работает на Windows, Linux и macOS.

Rider uses dotnet aspnet-codegenerator under the hood.

Подробнее о кодогенерации для проектов ASP.NET Core в Rider 2021.1 читайте в нашем блоге

Шаблоны маршрута ASP.​NET Core

Шаблоны маршрута часто используются в MVC-приложениях для соотнесения HTTP-запросов и URL-адресов. В версии 2021.1 мы поддержали шаблоны маршрута. Работая с ними, вы теперь можете пользоваться автодополнением кода, структурной навигацией, инспекциями и быстрыми исправлениями. Что вас ждет:

  • Инспекции для проверки синтаксических ошибок в HTTP-запросах.
  • Инспекции и быстрые исправления для проверки/исправления параметров маршрута.
  • Инспекции для ограничений маршрута.

Подробнее об этом рассказываем в статье о ReSharper 2021.1.

Удаление файлов перед публикацией

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

Встроенная документация MDN

Мы интегрировали в Rider документацию MDN. Это помогает избежать проблем с подключением к сайту MDN, и документация в HTML, CSS и JavaScript-файлах отображается быстрее. Кроме того, она стала более информативной: например, вы можете просмотреть подробную информацию о поддерживаемых версиях браузеров для API JavaScript.

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

Пользоваться популярным линтером Stylelint стало проще. Исправлять ошибки в CSS-коде теперь можно всего в несколько кликов. Наведите указатель мыши на проблемное место в файле или поместите туда курсор и нажмите Alt+Enter, а затем выберите Stylelint: Fix current file.

Также вы можете указать путь к файлу конфигурации в разделе Preferences / Settings | Languages & Frameworks | Style Sheets | Stylelint.

Специфичность селекторов CSS

При работе с файлами стилей вы теперь можете проверять специфичность селекторов, попросту наводя на них курсор. Либо вы можете переместить фокус на интересующий селектор и нажать F1/Ctrl+Q — так информация отобразится во всплывающем окне документации.

Предпросмотр HTML

В Rider теперь есть встроенное превью для HTML-файлов. Чтобы открыть его, нажмите на логотип Rider в виджете в правом верхнем углу редактора.

Отладчик

Присоединение к процессам с начального экрана

Теперь вы можете подключать удаленные .NET-процессы прямо с начального экрана Rider. Не обязательно предварительно открывать решение с исходным кодом. Откройте вкладку Attach to process начального экрана и выберите нужный .NET-процесс из списка — Rider начнет отладку процесса.

Интерактивные подсказки отладчика

В отладчике Rider появились интерактивные подсказки. Они не только сообщат вам о происходящем, но и позволят вмешаться в процесс отладки и управлять им через подсказки отладчика. Чтобы перейти в интерактивный режим, нажмите на подсказку и выберите Set Value. Вы сможете вводить исходные данные либо выбирать значения, пользуясь автодополнением. Также поддерживаются сочетания клавиш.

Чтобы включить подсказки отладчика, выберите опцию Show values inline в разделе Settings | Build, Execution, Deployment | Debugger | Data Views.

Другие улучшения в отладчике

  • Мы добавили возможность просматривать исходные данные объекта в случае, если его представление было изменено атрибутом DebuggerBrowsable.
  • Выполняя отладку, вы теперь можете просматривать все члены класса, сгенерированные компилятором.
  • Мы поправили отображение содержимого удаленных процессов отладки на macOS.
  • Rider теперь вычисляет автосвойства в случаях, когда это невозможно сделать стандартными средствами (например, когда код оптимизирован либо поток не находится в GC-безопасной точке).

Игровая зона

Unity

Rider 2021.1 развивает функциональность IDE, относящуюся к Unity, чтобы у вас было еще больше информации при работе с этими проектами. В каких ассетах Unity использует ваш код? Какие пути выполнения кода, вызываемые каждый кадр методом Update, являются критичными для производительности? Как можно улучшить отладку, тестирование и покрытие вашего кода?

Rider теперь умеет показывать, как Unity использует ваш код внутри сцен, ассетов и префабов (использования выделяются прямо в редакторе Unity).

В Rider 2021.1 мы также поддержали анимационные ассеты. Теперь использования свойств и методов отображаются как обратные вызовы анимаций.

Rider предоставляет автодополнение и валидацию для магических строк Unity. В IDE уже есть поддержка тегов, имен слоев, сцен и корутин. Rider 2021.1 добавляет поддержку значений состояния анимаций.

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

Rider 2021.1 добавляет новые элементы меню, позволяющие отобразить все методы, вызванные в критических путях (начиная с метода Update), или же просмотреть трассировку исходящих вызовов и выявить ресурсоемкие API Unity.

Для методов, скомпилированных при помощи Burst, Rider отобразит путь, включающий все вызванные методы — вплоть до создания контекста Burst.

Rider уже обеспечивает расширенную поддержку отладки для проектов Unity: IDE показывает объект Active Scene, а в окно отладки добавляются дочерние игровые объекты и компоненты.

Новая версия Rider поможет в отладке объектов SerializedProperty. Поля, не имеющие отношения к делу, будут скрыты по умолчанию — показаны будут только те значения, которые имеют отношение к типу свойства. Вы сможете просмотреть дочерние свойства и все сериализованные данные.

Rider расширил поддержку юнит-тестирования для Unity: теперь она включает покрытие кода тестами в режиме игры. Вы можете просматривать, запускать и отлаживать тесты в режимах редактирования и игры, а также следить за покрытием кода, и при этом не покидать редактор.

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

Godot

Также был обновлен плагин Godot Support для Rider. Теперь он поддерживает запуск юнит-тестов NUnit прямо в ходе игрового процесса. Это позволит вам убедиться, что все действительно работает так, как должно. Follow the instructions in this pull request to make it work in your game today! Мы будем рады вашим отзывам — вы можете оставить их на странице пул-реквеста.

Unreal Engine Ранний доступ Только для Windows

Пока что Rider для Unreal Engine доступен в рамках открытой превью-версии. Выпуск в составе Rider планируется чуть позже в этом году. У вас есть возможность бесплатно оценить превью до выхода публичного релиза.

The Unreal Engine’s Cast for type-safe dynamic casting is now available as a postfix template in code completion. Rider также поддерживает специфичный для Unreal Engine макрос рефлексии RIGVM_METHOD.

Мы добавили базовую поддержку Unreal Engine 5, реализованную на основе обратной связи от команды Epic Games.

Что касается C++, мы добавили Include и Type Hierarchies, а также реализовали поддержку Google Test и некоторых других фреймворков для юнит-тестирования кода на C++.

VCS

Улучшения для пул-реквестов

  • В окне пул-реквестов появился раскрывающийся список, показывающий все репозитории, доступные в текущем проекте.
  • Создавать пул-реквесты теперь крайне легко: просто нажмите на иконку «‎+» либо перейдите в ‎Git | GitHub | Create Pull Request. IDE откроет окно пул-реквестов — в нем вам нужно будет ввести информацию о пул-реквесте.
  • Во вкладке Info можно выбрать head-репозиторий и ветку, указать название и описание пул-реквеста, назначить ревьюеров и исполнителей, добавить метки.
  • Rider 2021.1 поддерживает шаблоны пул-реквестов. Добавьте в проект файл pull_request_template.md с описанием пул-реквеста — при создании пул-реквестов это описание будет отображаться автоматически.

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

Действие Save to Shelf

В Rider 2021.1 появилось новое действие Save to Shelf. Оно позволяет скопировать изменения на вкладку Shelf, сохранив их в локальной истории изменений. Действие можно вызвать при помощи сочетания клавиш либо введя «‎Save to Shelf» в окне Search Everywhere.

Compare with branch

Окно Compare with branch теперь позволяет скопировать файл из другой ветки. Просто выберите интересующий файл и нажмите на новый значок со стрелкой вниз рядом с Show diff.

Элементы UI/UX

Solution Explorer

Rider теперь сохраняет состояние окна Solution Explorer после закрытия IDE. В частности, это касается раскрытых в нем папок — вам больше не придется раскрывать их вручную, если вы заново открыли решение или перезапустили IDE.

Вертикальное разделение редактора на вкладки

Когда в редакторе открыто несколько вкладок в режиме Split, любую из них можно развернуть двойным кликом.

Диалог выбора папок Только для Windows

Мы обновили диалог выбора папок в Windows. Теперь вы увидите только те папки, которые доступны для выбора.

Недавние решения в панели задач Только для Windows

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

Новые модальные диалоги Только для macOS

Rider теперь поддерживает новые модальные окна в macOS Big Sur.

Менеджер Toolbox для Windows Forms Только для Windows

Мы обновили менеджер Toolbox для конструктора Windows Forms.

В левой части окна вы увидите список всех библиотек компонентов (системных и сторонних), сгруппированных по производителю. Выбрав библиотеку из списка, вы сможете указать конкретные компоненты в средней части окна — тогда в Toolbox отобразятся только эти компоненты. В правой части окна вы увидите метаданные для выбранного компонента.

В библиотеке море компонентов, и вы не можете найти тот, который вам нужен? Нет проблем! В средней части окна можно выполнить поиск — он сузит выборку компонентов и подсветит строку, по которой вы выполняли поиск, в списке результатов.

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

Редактор

Быстрый просмотр документации

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

Толщина шрифта

Когда программируешь много часов подряд, комфортный шрифт имеет большое значение. Мы добавили настройки типографики, чтобы вы могли подобрать идеальные размеры шрифта. В версии 2021.1 можно отрегулировать толщину обычных и жирных шрифтов в меню Preferences / Settings | Editor | Fonts.

Предпросмотр XAML

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

Инструмент предпросмотра XAML теперь располагается в окне редактора — это позволит вам по-разному ориентировать и организовывать рабочее пространство. Вы можете отделить окно предпросмотра от редактора по вертикали либо по горизонтали.

Элемент в фокусе теперь подсвечивается, поэтому вам будет легче находить тот или иной UI-элемент в сложном на вид интерфейсе.

Инструмент предпросмотра XAML теперь позволяет пролистывать экземпляры TabItem. Это удобно, если вы создаете пользовательские интерфейсы с несколькими вкладками.

Инструмент предпросмотра XAML теперь учитывает такие настройки, как DesignHeight и DesignWidth, при отрисовке представлений.

Обращаем ваше внимание, что предпросмотр XAML доступен только на Windows и только для приложений, использующих .NET Framework.

Подробнее об улучшениях инструмента предпросмотра XAML в Rider 2021.1 читайте в нашем блоге.

Стиль кода

Форматирование и стиль кода

Мы добавили несколько новых настроек:

  • Теперь вы можете выбрать, вставлять ли пробел перед скобками target-typed оператора new() и внутри них.
  • Вы можете указать, чтобы IDE делала перенос строки перед оператором присваивания.
  • Для меток можно задать отрицательный отступ.

Что касается пользовательских правил именования, мы изменили порядок, в котором они применяются: сначала учитываются более узкие правила.

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

EditorConfig

EditorConfig становится популярным инструментом среди .NET-разработчиков, и мы продолжаем улучшать его интеграцию с Rider. Вот что мы сделали к этому релизу:

  • Мы улучшили то, как Rider считывает настройки правил именования из EditorConfig, и то, как он записывает в EditorConfig правила именования, заданные пользователем.
  • Если EditorConfig переопределяет правила именования, Rider уведомит вас об этом на странице настроек именования.
  • Мы поддержали параметр EditorConfig csharp_indent_case_contents_when_block.

Поддержка F#

Мы добавили новый рефакторинг Inline Variable для локального типа связывания let.

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

To Interpolated String — новый анализатор (и соответствующее быстрое исправление), который преобразует строки формата printf в интерполированные строки на F# 5. Thanks again to Saul for the nice implementation.

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

Мы пополнили поддержку F# и другими быстрыми исправлениями, рефакторингами и т. д. Please see the full release notes for more details.

Интеграция со Space

Rider теперь поддерживает плагин для Space. Чтобы подключиться к своей организации в JetBrains Space, нажмите кнопку Get from VCS на начальном экране. После входа в систему вы сможете просматривать и клонировать репозитории проекта, читать код своих коллег, а также писать скрипты автоматизации Space.

Поддержка баз данных

Интерфейс для работы с правами доступа

Мы добавили интерфейс для изменения прав доступа при редактировании объектов.

В окне Modify user (вы можете открыть его из проводника баз данных для любого пользователя при помощи команды Ctrl+F6) появился интерфейс для назначения объектам прав доступа.

Функциональность доступна для PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server и Sybase.

Вы можете использовать неквалифицированные системные функции SQL Server

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

Подробнее об обновлениях инструмента для баз данных читайте в статье Что нового в DataGrip.

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

Умное восстановление пакетов NuGet при сборке

Мы реализовали NuGet Smart Restore on a build. Эта настройка позволяет выполнять восстановление при запуске сборки в случае, если эвристические алгоритмы выявили, что было выполнено внешнее восстановление. Вы также можете отключить ее — для этого перейдите в раздел Settings/Preferences | Build, Execution, Deployment | NuGet | Smart Restore on Build.

Параллельные сборки в Mono

Rider теперь поддерживает параллельные сборки в свежих версиях Mono. Включить эту возможность можно в разделе Settings | Build, Execution, Deployment | Toolset and Build.

Внешние зависимости при поиске в файлах

Теперь вы можете настроить, будет ли Rider воспринимать внешние зависимости при поиске текста или нет. Откройте диалог Find in Files, выберите Scope и нажмите на кнопку «‎…». В открывшемся окне Scopes вы увидите, включены ли внешние зависимости (External Dependencies) в область видимости или нет. Вы можете внести изменения, используя кнопки справа.

Поддержка формата JSON Lines

Мы теперь поддерживаем формат JSON Lines, в котором каждая запись находится на отдельной строке. Он используется для работы со структурированными данными и логами. IDE распознает типы файлов .jsonl, .jslines, .ldjson и .ndjson.

Файлы этих форматов содержат по несколько строк. Каждая из них является JSON-объектом и отделяется символом переноса строки. Запятые в начале и конце строки не обязательны, и вы можете не заключать содержимое файла в квадратные или фигурные скобки.