Rider 2021.2 предлагает улучшенную поддержку C#, в том числе для анализа кода, ссылочных типов, допускающих значение null (NRT) и генераторов кода. Для веб-разработчиков мы подготовили поддержку конечных точек ASP.NET Core и отладку приложений Blazor WebAssembly на стороне клиента. Для разработчиков игр, использующих Unity и Unreal Engine, также есть много интересного. А начальный экран теперь позволяет импортировать настройки из других IDE, таких как Visual Studio, VS for Mac или Visual Studio Code.
Новое окно Endpoints поможет исследовать конечные точки ASP.NET Core, которые зарегистрированы либо сопровождаются аннотацией [Route]
, [Http{Method}]
или [AcceptVerbs]
, а также переходить к ним напрямую.
Вы сможете изучать документацию конечных точек и переходить к контроллерам, реализующим конечные точки, при помощи действия Jump to Source. Используйте действие Find Usages, чтобы узнать, где они зарегистрированы.
Вкладка HTTP Client позволяет создавать и посылать запросы приложению. Это может пригодиться вам при тестировании API.
Тестируйте API при помощи встроенного плагина OpenAPI Specifications. Встроенная поддержка Swagger UI для файлов OpenAPI поможет в написании запросов и разборе получаемых ответов.
Также мы поддержали новые возможности в редакторе:
HttpClient
автодополнение предложит вам все URI, которые соответствуют действиям в контроллерах, аннотированных атрибутом [Route]
, [Http{Method}]
или [AcceptVerbs]
. Подробнее о возможностях нового окна Endpoints читайте в нашем блоге.
Долгожданная новость: теперь Rider позволяет выполнять отладку Blazor WebAssembly на стороне клиента! Поддерживаются приложения .NET 5.0 и .NET Core 3.1.
Follow the official Microsoft guide to set up WASM debugging. После этого можете запускать отладку привычным для вас образом.
Чтобы пользоваться отладкой WASM на Linux и macOS, необходимо заранее установить сертификаты разработчика. If you are using Ubuntu, you can follow this guide.
Rider supports the debugging proxy if either of these NuGet packages are installed: Microsoft.AspNetCore.Components.WebAssembly.DevServer or Microsoft.AspNetCore.Components.WebAssembly.Server. В данный момент мы не поддерживаем индивидуальные прокси для приложений Blazor WASM.
Используете временные переменные, чтобы поменять местами два значения? Предлагаем вам более элегантное решение. Модернизируйте ваш код при помощи нового быстрого исправления Swap via deconstruction.
Сократите количество операций выделения памяти и повысьте скорость работы вашего кода! Создавайте пустые массивы при помощи Array.Empty<T>
.
При выделении памяти для нового Type[0]
Rider предложит вам использовать тип Type.EmptyTypes
, что более эффективно с точки зрения памяти.
Если вам не требуются определенные EventArgs
, Rider сообщит вам о возможности замены new EventArgs()
на EventArgs.Empty
.
Другие улучшения:
Разрешили использование NRT и теперь вынуждены бесконечно скрывать предупреждения в коде?
Если вы скрыли предупреждение (!
) для фрагмента кода, но со временем необходимость в этом исчезла, Rider уведомит вас.
Мы добавили контекстное действие, позволяющее найти все скрытые предупреждения, связанные с допустимостью null, в выбранной области видимости. Просматривая результаты в окне Find Results, вы сможете оценить, где скрыть предупреждение по-прежнему нужно, а где от этого можно избавиться.
Появился новый рефакторинг для изменения допустимости значения null: воспользоваться быстрым исправлением, действием Refactor This или рефакторингом без модального диалога можно при добавлении или удалении аннотации допустимости null (?
).
Rider обновит соответствующие аннотации и предложит применить изменения ко всей кодовой базе.
Доступно несколько новых инспекций и соответствующих быстрых исправлений для работы с атрибутами JetBrains Annotations в случае, если вы разрешили использование NRT.
Обновите атрибуты JetBrains.Annotations, применив синтаксис NRT и атрибуты, поддерживаемые компилятором. К примеру, вы можете заменить [CanBeNull] string
на string?
Rider сообщит вам об избыточных атрибутах JetBrains.Annotations ([NotNull] string
, [ItemCanBeNull] List<string?>
и пр.) и предложит соответствующее быстрое исправление.
Если синтаксис type annotation не разрешен, новая инспекция и соответствующее быстрое исправление добавят аннотации, поддерживаемые компилятором. Например:
[JetBrains.Annotations.NotNull] T param
на [DisallowNull] T param
(where T: class?
) [JetBrains.Annotations.CanBeNull] T
на [System.Diagnostics.MaybeNull] T
(в C# 8, где синтаксис T?
не разрешен) Мы добавили в Rider новые инспекции и быстрые исправления для работы с аннотациями, которые поддерживаются компилятором ([DisallowNull]
, [AllowNull]
, [MaybeNull]
, [NotNull]
и др.).
Появилась инспекция для отслеживания избыточных аннотаций (например, использование [AllowNull]
для типа NRT) и соответствующее быстрое исправление, чтобы убирать их.
Rider предложит вам использовать синтаксис NRT, если это допустимо.
Другие улучшения, достойные внимания:
Подробнее о поддержке NRT в ReSharper и Rider 2021.2 читайте в этом блог-посте.
Генераторы кода производят код во время компиляции, позволяя разработчикам сократить количество скучной однообразной работы. Многие из возможностей, которые раньше работали только для файлов, созданных вручную, теперь также доступны для автоматически сгенерированных файлов. Мы улучшили возможности редактора и добавили поддержку рефакторингов.
К сгенерированным файлам теперь также применимы рефакторинги. К примеру, вы можете использовать рефакторинг Rename, чтобы переименовать автоматически сгенерированное свойство. При этом Rider также переименует соответствующий символ в коде, написанном вручную.
Рефакторинг Change Signature позволяет проверить, скомпилируется ли код, который будет автоматически сгенерирован после внесения изменений.
Также вы можете пользоваться Find Usages, искать наследников, переходить от сгенерированного кода к коду, написанному вручную (Ctrl+Click и Navigate To), и многое другое.
Для членов классов, таких как события, поля и свойства, теперь работает семантическая подсветка. При необходимости будут показаны встроенные подсказки.
Ошибки и предупреждения, найденные в сгенерированном коде, отобразятся в редакторе и на панели маркеров.
Также теперь Rider поддерживает код, созданный генераторами кода в VB.NET.
Постепенно становясь первоклассной IDE для разработки игр, Rider вводит новые возможности для Unity и некоторые важные улучшения поддержки Unreal Engine в рамках программы раннего доступа. Если вы используете Godot, обязательно попробуйте плагин Godot Support для Rider.
Умная интеграция Rider с редактором Unity обеспечивает проверку наличия открытых и несохраненных сцен перед коммитом. Вам больше не придется беспокоиться, все ли вы сохранили перед коммитом.
Как вы знаете, Rider показывает ссылку на документацию для классов и методов Unity во всплывающем окне. Теперь же вы можете использовать действие External Documentation (и соответствующе сочетание клавиш), чтобы перейти к документации, минуя всплывающее окно.
Теперь в Rider можно делать отладку локальных UWP-проигрывателей: для этого нужно настроить Windows так, чтобы он разрешал подключение к отлаживаемому процессу.
Представление Packages в Unity Explorer теперь гораздо быстрее отображается при повторном открытии решения и даже воспроизводит раскрытые папки.
В этом релизе мы улучшили отладку IL2CPP-проигрывателей за счет отключения Break on Unhandled Exception при подключении к IL2CPP-проигрывателю.
Как обычно, мы добавили множество мелких улучшений и исправлений. Например, методы [UnitySetup]
больше не отмечаются как неиспользованные, а имена слоев корректно отображаются в списке автодополнения для старых проектов. Мы улучшили производительность инспекций для Unity — прежде всего тех, которые работают с большими файлами.
Пока что Rider для Unreal Engine доступен в рамках программы раннего доступа. Однако он уверенно движется в сторону релиза. Ниже мы расскажем обо всем, над чем работали со времен релиза 2021.1.
Поддержка Unreal Engine 5. Да, все так! Rider for Unreal работает с новыми проектами Unreal Engine 5 не хуже, чем с проектами Unreal Engine 4.
Поддержка открытия файлов .uproject. Да, больше не придется генерировать файлы решений Visual Studio — Rider научился открывать проекты Unreal Engine прямо из файла <ИмяПроекта>.uproject
.
Rider для Unreal Engine теперь работает на Mac! Просто откройте нужный файл <ИмяПроекта>.uproject
и наслаждайтесь Rider for Unreal Engine на вашем Mac. Вы сможете редактировать код на C++ и файлы шейдеров (HLSL), выполнять навигацию, запускать инспекции и рефакторинги, настраивать стиль кода и применять для него быстрые исправления. Также мы поддержали Blueprint (поиск кода в файлах Blueprint, ссылки и счетчики Code Vision и навигацию), тесную интеграцию с Unreal Editor и встроенный в него отладчик. Версия для macOS работает с Unreal Engine 4.26 и выше.
Крупное обновление поддержки Natvis и встроенная демонстрация результатов отладки. Мы добавили поддержку наследуемых атрибутов, спецификаторов формата, настраиваемых элементов списка и др. — в том числе однострочные описания всех структур, не поддерживаемых Natvis, и узел [Raw View]
для просмотра данных объекта.
Расширенные настройки стиля кода. Rider распознает проекты Unreal и сам выставляет настройки, позволяющие IDE понимать конвенции стиля кода UE и следовать им. Он подсветит код, нарушающий правильный стиль, и предложит быстрые исправления, чтобы внести правки.
Последнее, но не менее значимое нововведение — плагин EzArgs, обеспечивающий простой доступ к аргументам конфигурации run/debug для C++: достаточно просто ввести аргумент в раскрывающийся список на панели инструментов.
Мы объединили окна Reformat File и Code Cleanup. Старые сочетания клавиш для этих окон продолжат работать, но теперь вы сможете пользоваться единым представлением и выполнять оба шага одновременно. Для профилей очистки указываются входящие в них действия. Также теперь есть кнопка для переключения в режим редактирования профилей.
В окне коммита теперь можно включить автоматическую очистку кода для ваших изменений и выбрать желаемый профиль. Либо воспользуйтесь новой опцией в окне Reformat and Cleanup для переформатирования/очистки только тех изменений в текущем файле, которые не были закоммичены.
Теперь действия по переформатированию кода, оптимизации импортов и реорганизации кода также доступны для CSS, JavaScript и SQL. Вы можете отредактировать правила в Settings | Editor | Code Cleanup.
Пользуетесь Rider в первый раз? Для тех, кто никогда не пользовался Rider, мы добавили на начальный экран возможность импортировать настройки из других IDE, таких как Visual Studio, Visual Studio для Mac и Visual Studio Code. Также Rider распознает настройки ReSharper.
Подробнее об импорте настроек из других IDE читайте в нашем блоге.
Теперь нужное окно можно просто перетащить в удобное место — как внутри основного окна IDE, так и в отдельное окно. Просто нажмите на заголовок окна и, удерживая его, перетащите в любую подсвеченную область.
Для пользователей macOS заголовки окон IDE теперь прозрачные (за исключением полноэкранного режима). Это значит, что между заголовком окна и самим окном нет видимой границы.
Настроить параметры Rider для конкретных сценариев использования можно в меню Preferences/Settings раздела Advanced Settings. Например, можно добавить левое поле в режиме Distraction-free или сделать так, чтобы курсор двигался вниз, когда вы используете действие Comment with Line Comment.
Мы упростили навигацию в окне настроек Preferences/Settings: в правом верхнем углу окна появились стрелки. Они позволяют быстро перемещаться между открытыми разделами.
По умолчанию отладчик вычисляет и показывает значения свойств. Но иногда их вычисление могло занимать много времени. Поэтому мы добавили новое действие Disable Evaluation of Selected Item.
Бывает, что вычисление вызова метода оказывается фатальным для сеанса отладки, особенно в случае с нативным кодом. Теперь Rider запоминает проблемные вызовы и запрещает вам вычислять их.
При пошаговой отладке каждый новый файл открывается в новой вкладке, из-за чего панель вкладок может здорово разрастись. Теперь вы можете воспользоваться вкладкой предпросмотра. Она позволяет просматривать файлы в одной вкладке друг за другом, не открывая каждый файл в отдельной вкладке. Включить эту возможность можно в Settings/Preferences | General | Editor Tabs | Opening Policy.
Раньше узел, хранящий изменения, которые не были закоммичены, назывался Default Changelist. В этом релизе мы сделали формулировку более точной — Changes. Это изменение распространяется на все новые проекты.
Rider больше не будет автоматически создавать списки изменений при выполнении операций Git. К примеру, при cherry-pick больше не будет создаваться список изменений.
Если вы хотите, чтобы списки, напротив, создавались, перейдите в Preferences/Settings | Version Control | Changelists и отметьте галочкой Create changelists automatically.
Мы добавили поле поиска в диалоговом окне Local History, чтобы вам было легче переходить к нужному тексту в версиях локальной истории. Для быстрого поиска по истории файла щелкните правой кнопкой мыши по измененному файлу, выберите Local History | Show History в контекстном меню и введите ключевые слова в поле поиска.
Теперь вы можете защитить Git-коммиты, подписав их с помощью GPG. Включить эту функцию можно в Preferences/Settings | Version Control | Git. Если вы пользуетесь ключом GPG в первый раз, вам сначала нужно будет настроить его. Если вы хотите использовать настроенный ранее ключ GPG, необходимо выбрать его из выпадающего списка.
Теперь самая ранняя версия Git, которую поддерживает IDE — 2.17. Мы внесли это изменение, поскольку сейчас версия 2.17 — самая ранняя, для которой еще выпускаются обновления безопасности.
Мы реализовали структурное удаление кода. Теперь можно выделять и удалять код, используя любой вид структурного выделения (структурную навигацию, расширение/сужение области выделения, реорганизацию кода и др.), — Rider сам внесет необходимые структурные модификации. Вы можете убирать запятые и точки с запятыми для аргументов в вызове метода, удалять скобки в аргументах атрибута или в пустых инициализаторах объекта.
Мы улучшили быстрый просмотр документации. Атрибуты теперь подсвечиваются — так их проще читать и исследовать. При просмотре класса или метода, использующего дженерики, Rider больше не показывает значения плейсхолдеров — вместо этого отображается конкретная реализация.
Предпочитаете использовать стиль отступов Pico? Настроить стиль Pico теперь можно на вкладе Braces Layout, перейдя на страницу Preferences/Settings | Editor | Code Style | C# | Braces Layout.
Теперь, когда вы делаете превью HTML-файлов в браузере и параллельно сохраняете новые изменения в HTML-файле или связанных с ним файлах CSS и JavaScript, IDE автоматически обновит превью. Эта возможность включена по умолчанию.
Вам больше не нужно тратить время на рефакторинг каждого значения или функции useState — Rider переименует их самостоятельно. Установите курсор на значение состояния и нажмите Shift+F6 или выберите Refactor | Rename в контекстном меню.
require()
Знаете ли вы, что Rider умеет добавлять отсутствующие операторы импорта при вводе ES6-символов? Теперь это также возможно для модулей CommonJS: при автодополнении кода будут добавлены необходимые импорты require
.
Подробнее об этом рассказываем в статье о WebStorm.
Теперь вы можете генерировать не только файлы .apk
, но и файлы .aab
(Android App Bundle). Скоро .apk
станет единственным форматом, который можно будет загрузить на Google Play Store.
Появилась возможность создавать и редактировать XCAssets для imageset
, appiconset
и colorset
прямо в Rider. Это позволяет просматривать различные конечные устройства и относящиеся к ним изображения, иконки и цвета. Вы можете добавлять или перемещать изображения и иконки, просто перетаскивая их. Также мы добавили инструмент выбора цвета, позволяющий с легкостью выбирать цвета.
Теперь, когда вы редактируете разметку Android или файлы ресурсов, файл Resource.Designer.cs
генерируется автоматически и убирает все ошибки, которые ранее показывались неверно.
Постфиксные шаблоны помогают преобразовывать введенные вами выражения, не возвращаясь в начало строки. Мы наконец поддержали их для F#, начав с шаблона let
.
В Rider появилось новое действие, позволяющее выполнять деконструкцию паттернов для tuples
и вариантов union
.
Мы добавили новые действия для реорганизации кода. Вы можете перемещать элементы вверх, вниз, влево и вправо прямо внутри enum и вариантов union, полей record и вариантов union, предложений в match, кортежей и параметров функций.
Новое действие Optimize Imports освободит вас от необходимости вручную запускать подобное быстрое исправление каждый раз, когда вы удаляете ненужные импорты и получаете предупреждения.
let
верхнего уровня. .fsproj
. Открыт ранний доступ к версии Rider 2021.2 с полной нативной поддержкой чипа M1. Эта версия не включает трансляцию x64-to-ARM64
. Используются следующие среды исполнения:
Подробнее о этом читайте на сайте поддержки Rider.
Генерация DDL-источников — еще один наш шаг на пути к созданию простой системы версионирования баз данных. Теперь вы можете хранить DDL-файлы в VCS-системе и заново генерировать их каждый раз, когда структура вашей базы обновляется.
В новой версии можно создать источник данных DDL на основе обычного. DDL-файлы, на которых основывается такой источник данных, генерируются локально. Благодаря этому вы всегда сможете пересоздать эти файлы и обновить источник данных DDL.
Опция Separate Procedures and Functions, доступная в настройках проводника баз данных (значок шестеренки), помещает функции и процедуры в разные папки. При включении опции изменения применятся сразу же.
Что касается SQL Server, то для скалярных и табличных функций также есть разные узлы. Для PostgreSQL есть специальный узел, хранящий триггерные функции.
Еще одна новая настройка — Show Constraints and Triggers in the Schema. Если ее включить, триггеры, ключи и индексы будут отражаться в отдельных узлах на корневом уровне схемы, а не внутри таблиц.
Теперь вы можете пользоваться автодополнением для синонимов объектов из других баз данных.
Теперь dotCover позволяет запускать параллельный анализ покрытия тестовых классов на основе одной сборки. В некоторых случаях это может ускорить анализ покрытия.
Для проектов .NET Core и .NET теперь можно делать предварительную загрузку тест-раннеров для юнит-тестов — имея их в памяти, вы сможете быстрее запускать анализ покрытия.
Другие улучшения, достойные внимания:
Теперь DPA хранит по два значения для каждой найденной проблемы — исторический максимум и значение, полученное при последнем запуске. Это предотвращает ложноотрицательные результаты: раньше найденные проблемы могли не пройти порог и исчезнуть из списка — не потому, что они были исправлены, а потому, что изменились условия запуска.
Есть и другие улучшения:
SpecFlow is a tool to bring Behavior-Driven Development to .NET. В ответ на запрос сообщества мы решили помочь разработчикам SpecFlow создать плагин SpecFlow для JetBrains Marketplace. Он обеспечивает подсветку синтаксиса, автодополнение, навигацию и генерацию скелетов для тестов SpecFlow. Подробнее об этих возможностях можно узнать из вебинара Андреаса Виллиха.
Мы обновили список популярных плагинов, отображающийся в мастере настройки Rider при первичной настройке. Новый список такой:
Большие по объему директории (node_modules, libs и пр.) могут значительно замедлять индексирование файлов, которое необходимо для быстрого текстового поиска. Теперь вы можете выключить индексирование для той или иной директории через контекстное меню.
Появилась возможность редактировать свойства (Build Action, Copy to Output Directory и др.) сразу нескольких файлов, выбранных в Solution Explorer.
The embedded decompiler now can decompile single-file apps. Поддерживаются форматы однофайловых приложений, используемые в SDK .NET Core 3.1, .NET 5 и будущем .NET 6.
Сборки, идущие в комплекте с такими приложениями, теперь можно просматривать привычным способом.
Вы больше не пропустите критически важные обновления продуктов в JetBrains Toolbox App. Rider сообщит, что можно скачать новую версию, и предложит ее установить. Эта функция будет работать с JetBrains Toolbox App 1.20.8804 или более поздних версий.