Rider 2020.1 поддерживает горячую перезагрузку Xamarin и динамический анализ программы. На macOS и Linux серверная часть Rider переведена на .NET Core. Появился простой способ настройки серьезности ошибок в редакторе и анализ использования целочисленных значений. Мы ускорили автодополнение, переработали окно отладки, добавили рефакторинг Extract Class и фильтры покрытия.
Встречайте Rider на основе .NET Core! На macOS и Linux серверная часть наконец переведена с Mono на .NET Core. Вы сразу заметите:
Кстати, текущая свежая версия .NET Core 3.1 обеспечивает гораздо более высокую производительность по сравнению с версией 3.0.
Обратите внимание: пока что все это доступно только на macOS и Linux. Поддержку Windows планируем добавить в текущем году.
Прочитать подробнее о переходе с Mono на .NET Core и посмотреть графики производительности вы можете в нашем блоге (на английском языке).
Если у вас возникнут проблемы с тем, что бэкенд Rider работает в .NET Core, и вы захотите вернуться к среде выполнения Mono, выберите Help | Switch IDE runtime to Mono. Если что-то пойдет не так, обязательно нам сообщите.
В Rider появилась начальная поддержка Xamarin Hot Reload. Теперь Rider автоматически применяет изменения, сделанные в Xamarin Forms XAML, к приложению, отлаживаемому на устройстве или в симуляторе, без повторной сборки и развертывания.
Обратите внимание на ограничение: горячая перезагрузка не будет работать, если ПК/ноутбук с Rider и iOS-устройство не находятся в одной и той же сети Wi-Fi, даже если устройство подключено к компьютеру через USB.
Кроме того, мы добавили одно важное исправление в поддержку Xamarin: ошибка Invalid target architecture 'arm64e' больше не появляется при запуске проектов Xamarin.iOS на iPhone XS Max.
Подробности читайте в нашем блоге.
В этой версии мы представляем динамический анализ программы (DPA). Каждый раз, когда вы запускаете проект в Rider, DPA начинает собирать данные о распределении памяти. Как только вы закроете приложение, вы увидите список обнаруженных проблем: замыкания и выделение памяти кучам больших и малых объектов. Самое главное: вам не нужно запускать никаких сеансов профилирования и снимать снэпшоты. Просто работайте как обычно, все данные будут собираться в фоновом режиме, практически не потребляя дополнительных ресурсов. Мы тестировали DPA на множестве реальных решений и обнаружили замедление всего на 0–2 процента.
Обратите внимание: динамический анализ программы пока поддерживается только на Windows, и вам не нужна отдельная лицензия для его активации.
Подробности читайте в нашем блоге (на английском языке)
В этой версии появился новый тип анализа кода, который проверяет использование целочисленных значений в вашем приложении. Rider отслеживает, как меняются значения всех локальных переменных int
, и проверяет правильность операций с такими переменными для обнаружения бесполезных и потенциально ошибочных фрагментов кода. Rider предупредит вас, если обнаружит:
true
либо false
. switch
, проверяющие целочисленные значения.1
, прибавление 0
и т.п. int
.0
.Чтобы повысить точность анализа, мы добавили два новых атрибута JetBrains.Annotations для использования с членами типа и параметрами типа int
: [NonNegativeValue]
и [ValueRange(from, to)]
. Эти атрибуты определяют, как значения отдельных членов int
могут меняться во время выполнения.
ScriptableObjects
и значения сериализованных полей. Boo.Lang.List
и System.Diagnostics.Debug
при автодополнении. Мы продолжаем расширять поддержку C#8. Мы многое поменяли в архитектуре Rider, чтобы анализ кода, рефакторинги, ReSharper Build и другие функции поддерживали ссылочные типы, допускающие значение null. Rider 2020.1 показывает предупреждения компилятора, связанные с такими типами, и предоставляет быстрые исправления для большинства из них.
Кроме того, мы добавили несколько новых инспекций и быстрых исправлений, чтобы:
nameof
вместо конструкции typeof(SomeType).Name для получения имени текущего типа. За прошедший год мы получили несколько сообщений о том, что пользователям приходится долго ждать появления окна автодополнения. Мы поработали над этим, и теперь, когда вы начинаете печатать, окно автодополнения всплывает намного быстрее, особенно в больших решениях.
Еще одна полезная функция, вошедшая в этот релиз: члены, помеченные как Obsolete, можно исключить из вариантов автодополнения, если вы не хотите их там видеть.
И наконец, при автодополнении из всплывающего окна теперь соблюдаются настройки стиля кода.
Мы полностью переработали окно Debug, чтобы визуально разгрузить интерфейс. Когда запущен только один сеанс отладки, все вкладки располагаются на одном уровне. Имена вкладок занимают меньше места, оставляя больше пространства для отладчика. Когда сеансов несколько, добавляется еще один слой вкладок, чтобы их разделять.
Кроме того, мы объединили панели Threads и Frames. Если вам не нужна панель Threads, ее можно скрыть, нажав на значок Hide threads view.
Мы обновили механизм отладчика, чтобы отлаживать приложения было еще удобнее:
Теперь вы можете легко настроить, что следует подсвечивать в коде. Всего одним кликом можно включить или отключить Code Vision, подсказки параметров, подсказки о производительности Unity, сообщения об ошибках, предупреждения, предложения, контекстные действия и многие другие сообщения в редакторе. Для этого используйте новый значок в правом нижнем углу редактора.
Мы переработали панели инструментов в окнах Unit Test Session и Unit Test Explorer
Кроме того, мы добавили три больших изменения:
Подробности читайте в нашем блоге (на английском языке).
В Rider 2019.3 в экспериментальном режиме мы добавили клиент TFS, который значительно ускорил действие Checking for changes. В этом релизном цикле мы продолжали работать над этой функциональностью.
И вот TFS-клиент официально входит в новую версию и несет в себе много улучшений. Во-первых, включение интеграции c VCS теперь доступно для рабочих областей TFS, созданных локально с помощью Visual Studio. Это означает, что вам больше не нужно заново создавать локальную рабочую область в Rider. Во-вторых, значительно повысилась производительность операций удаления и возвращения к предыдущей версии.
Чтобы начать использовать TFS-клиент, включите его в меню Settings | Version Control | TFVC.
Как и в других наших IDE, в Rider теперь по умолчанию используется шрифт JetBrains Mono. Надеемся, он вам понравится.
В Rider перекочевала еще одна долгожданная функция из ReSharper: пространства имен можно автоматически импортировать при копировании кода из файла в решении.
Если вы вручную редактируете файлы, связанные с NuGet, вас порадует начальная поддержка редактирования файлов NuGet.Config, packages.config и *.nuspec, которая включает автодополнение, проверку синтаксиса и быстрый просмотр документации.
Стоит также отметить несколько небольших улучшений:
Extract Class — еще один востребованный рефакторинг из ReSharper, который наконец-то появился в Rider.
Знаете, зачем он нужен? Представьте, что в вашем коде есть класс, выполняющий работу, которую на самом деле должны выполнять два разных класса. С помощью этого рефакторинга можно разложить составной класс на два класса, у каждого из которых единственное назначение. Extract Class помогает выбрать методы и поля, которые необходимо перенести из старого класса в новый. Он предупреждает обо всех нарушенных зависимостях и проблемах с доступностью и предлагает варианты устранения конфликтов.
В окне Solution Explorer появились две новые папки, которые дают дополнительную информацию о вашем проекте: Implicit references в качестве подпапки Assemblies и MSBuild import targets.
Кроме того, здесь есть несколько небольших обновлений:
Чтобы вам было удобнее работать с результатами анализа покрытия юнит-тестов, мы добавили фильтры покрытия. Чтобы их установить, перейдите в меню Preferences/Settings | Build, Execution, Deployment | dotCover | Filtering.
Если вы выполняете профилирование производительности на Linux или macOS, у нас есть хорошая новость: в этих операционных системах наконец можно профилировать приложения .NET Core в режиме Tracing. Кроме того, теперь вы можете подключить профилировщик к приложениям .NET Core на Linux.
Мы добавили несколько новых функций в декомпилятор и IL Viewer:
Мы внесли много изменений и исправлений в поддержку F# и надеемся, они помогут вам в повседневной работе:
this.Property
) и выражений индексатора ("foo".[1]
). Подробнее об изменениях можно узнать в этом репозитории на GitHub.