Что нового в Rider

Rider 2020.1 поддерживает горячую перезагрузку Xamarin и динамический анализ программы. На macOS и Linux серверная часть Rider переведена на .NET Core. Появился простой способ настройки серьезности ошибок в редакторе и анализ использования целочисленных значений. Мы ускорили автодополнение, переработали окно отладки, добавили рефакторинг Extract Class и фильтры покрытия.

На macOS и Linux серверная часть переведена на .NET Core

Серверная часть Rider переведена на .NET Core

Встречайте Rider на основе .NET Core! На macOS и Linux серверная часть наконец переведена с Mono на .NET Core. Вы сразу заметите:

  • Улучшения производительности.
  • Меньший объем занимаемой памяти.
  • Восстановление NuGet стало многопоточным (не однопоточным, как в Mono). А значит, оно будет в 4 раза быстрее, если у вас 4-ядерный процессор, в 8 раз быстрее, если у вас 8-ядерный процессор... ну вы понимаете.
  • Отсутствие многих других ограничений Mono.

Кстати, текущая свежая версия .NET Core 3.1 обеспечивает гораздо более высокую производительность по сравнению с версией 3.0

Обратите внимание: пока что все это доступно только на macOS и Linux. Поддержку Windows планируем добавить в текущем году.

Прочитать подробнее о переходе с Mono на .NET Core и посмотреть графики производительности вы можете в нашем блоге (на английском языке). 

Если у вас возникнут проблемы с тем, что бэкенд Rider работает в .NET Core, и вы захотите вернуться к среде выполнения Mono, выберите Help | Switch IDE runtime to Mono. Если что-то пойдет не так, обязательно нам сообщите.

Горячая перезагрузка Xamarin

Горячая перезагрузка Xamarin

В Rider появилась начальная поддержка Xamarin Hot Reload. Теперь Rider автоматически применяет изменения, сделанные в Xamarin Forms XAML, к приложению, отлаживаемому на устройстве или в симуляторе, без повторной сборки и развертывания.

Обратите внимание на ограничение: горячая перезагрузка не будет работать, если ПК/ноутбук с Rider и iOS-устройство не находятся в одной и той же сети Wi-Fi, даже если устройство подключено к компьютеру через USB.

Кроме того, мы добавили одно важное исправление в поддержку Xamarin: ошибка Invalid target architecture 'arm64e' больше не появляется при запуске проектов Xamarin.iOS на iPhone XS Max.

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

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

Динамический анализ программы (DPA) Только для Windows

В этой версии мы представляем динамический анализ программы (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 могут меняться во время выполнения.

Поддержка Unity

Поддержка Unity

  • Мы значительно оптимизировали использование памяти и ускорили индексирование ассетов. Теперь Rider индексирует весь ваш код, прежде чем заглядывать в ассеты, а значит вы сможете начать пользоваться автодополнением, подсветкой, инспекциями и другими функциями быстрее, чем раньше. Индексирование ассетов продолжится после загрузки решения в фоновом режиме. По его завершении Rider сможет находить использования и даже производить переименование внутри ассетов. Конечно, после этого индекс будет обновляется по мере изменения файлов.
  • Само индексирование ассетов стало умнее. Оно корректно обрабатывает использование кода в префабах Nested и Variant, а также показывает использование ScriptableObjects и значения сериализованных полей.
  • Rider теперь автоматически находит все тесты вашего проекта в режимах Edit и Play.
  • Мы добавили новую инспекцию Prefer jagged arrays to multidimensional arrays (использовать ступенчатые массивы вместо многомерных), которая улучшает производительность в критических путях. Это микрооптимизация, поэтому она предлагается только в важных для производительности контекстах, таких как метод Update или любой метод, вызываемый из Update.
  • Для Unity-проектов Rider больше не будет предлагать Boo.Lang.List и System.Diagnostics.Debug при автодополнении.
  • Мы изменили порядок функций событий в диалоге Generate: теперь в начале располагаются самые важные методы. При генерации функций с помощью Alt+Enter они также будут генерироваться в правильном месте.
  • Подробнее об изменениях можно узнать в этом репозитории на GitHub.
Поддержка C#

Поддержка C#

Мы продолжаем расширять поддержку C#8. Мы многое поменяли в архитектуре Rider, чтобы анализ кода, рефакторинги, ReSharper Build и другие функции поддерживали ссылочные типы, допускающие значение null. Rider 2020.1 показывает предупреждения компилятора, связанные с такими типами, и предоставляет быстрые исправления для большинства из них.

Кроме того, мы добавили несколько новых инспекций и быстрых исправлений, чтобы:

  • Находить избыточные ограничения параметров типов с учетом ссылочных типов, допускающих значение null.
  • Находить и использовать асинхронные перегрузки методов, когда они доступны, вместо синхронных перегрузок.
  • Использовать выражение nameof вместо конструкции typeof(SomeType).Name для получения имени текущего типа.
Автодополнение

Автодополнение

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

Еще одна полезная функция, вошедшая в этот релиз: члены, помеченные как Obsolete, можно исключить из вариантов автодополнения, если вы не хотите их там видеть.

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

Обновленное окно Debug

Обновленное окно Debug

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

Кроме того, мы объединили панели Threads и Frames. Если вам не нужна панель Threads, ее можно скрыть, нажав на значок Hide threads view.

Обновления в отладчике

Обновления в отладчике

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

  • Теперь вы можете отсоединиться от процесса, запущенного в отладчике, без завершения выполнения программы.
  • Smart Step Into включено по умолчанию для действия Step Into (Preferences/Settings | Build, Execution, Deployment | Debugger | Stepping | .NET Languages | Always do Smart Step Into).
  • Отладчик поддерживает среду выполнения .NET Core x86.
  • В строке выполнения теперь отображается имя потока, чтобы вы могли понять, где именно происходит выполнение.
  • После остановки сеанса отладки при возникновении исключения можно перейти к определенной точке с помощью действия Skip to Here/Cursor.
  • Теперь вы можете лучше контролировать вывод в окне Debug Output и отключить в нем служебные сообщения.
Быстрая настройка уровней серьезности ошибок

Быстрая настройка уровней серьезности ошибок

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

Обновления в юнит-тестировании

Обновления в юнит-тестировании

Мы переработали панели инструментов в окнах Unit Test Session и Unit Test Explorer

  • Некоторые значки переместились с левой панели инструментов на верхнюю.
  • На верхней панели появилось поле для текстового поиска по дереву юнит-тестов.
  • Вместо статусов Failed, Aborted и Inconclusive теперь по умолчанию есть только один статус Broken. Если вы предпочитаете старый вариант, нажмите на значок шестеренки на верхней панели инструментов.

Кроме того, мы добавили три больших изменения:

  • Расширенная опция Group by в окнах Unit Test Explorer и Unit Test Session поможет сгруппировать тесты, как вам хочется. Новый параметр Duration позволяет группировать тесты по продолжительности.
  • В окне Unit Test Session можно отфильтровать тесты по целевому фреймворку, если у вас их больше одного (что бывает довольно часто) и вы не хотите видеть некоторые из них.
  • Вы можете экспортировать и импортировать любой сеанс юнит-тестирования. Это позволяет делиться сеансами с коллегами и использовать один и тот же набор тестов на разных компьютерах или в разных ветках. Кроме того, экспортированный файл полностью совместим с ReSharper, поэтому вы можете поделиться сеансами из Rider, с коллегами, которые используют ReSharper, и наоборот.

Подробности читайте в нашем блоге (на английском языке).

Реактивный клиент TFS

Реактивный клиент TFS

В 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, которая включает автодополнение, проверку синтаксиса и быстрый просмотр документации.

Стоит также отметить несколько небольших улучшений:

  • Разделители методов теперь доступны для C#. Они визуально отделяют интерфейсы, классы и методы друг от друга.
  • С помощью сочетаний клавиш Alt+Shift+Up / Down / Right / Left Arrow можно выделить блок кода так же, как в Visual Studio.
  • Действия «Переместить курсор в начало/конец блока кода» и «Переместить курсор в начало/конец блока кода с выделением» теперь работают для C# так же, как и в других наших IDE.
  • Всплывающее окно документации теперь появляется при наведении указателя мыши на символ, если он подсвечен как ошибка.
Рефакторинг Extract Class

Рефакторинг Extract Class

Extract Class — еще один востребованный рефакторинг из ReSharper, который наконец-то появился в Rider.

Знаете, зачем он нужен? Представьте, что в вашем коде есть класс, выполняющий работу, которую на самом деле должны выполнять два разных класса. С помощью этого рефакторинга можно разложить составной класс на два класса, у каждого из которых единственное назначение. Extract Class помогает выбрать методы и поля, которые необходимо перенести из старого класса в новый. Он предупреждает обо всех нарушенных зависимостях и проблемах с доступностью и предлагает варианты устранения конфликтов.

Окно Solution Explorer

Обновленный Solution Explorer

В окне Solution Explorer появились две новые папки, которые дают дополнительную информацию о вашем проекте: Implicit references в качестве подпапки Assemblies и MSBuild import targets.

Кроме того, здесь есть несколько небольших обновлений:

  • В диалоге Add References появилась функция Recent Assemblies.
  • Мы добавили простой конструктор для файлов настроек приложения (*.settings).
  • Свойства файлов доступны для всех файлов в Solution Explorer (View | Appearance | Details in Tree Views).
  • Улучшена генерация кода Resx для проектов .NET Standard на macOS и Linux.
Обновленный анализ покрытия кода и профилирование производительности

Обновленный анализ покрытия кода и профилирование производительности

Чтобы вам было удобнее работать с результатами анализа покрытия юнит-тестов, мы добавили фильтры покрытия. Чтобы их установить, перейдите в меню Preferences/Settings | Build, Execution, Deployment | dotCover | Filtering.

Если вы выполняете профилирование производительности на Linux или macOS, у нас есть хорошая новость: в этих операционных системах наконец можно профилировать приложения .NET Core в режиме Tracing. Кроме того, теперь вы можете подключить профилировщик к приложениям .NET Core на Linux.

Конфигурации запуска и сборка

Конфигурации запуска и сборка

  • Мы добавили действие для отмены сборки Cancel build.
  • Для всех конфигураций запуска доступны команды Build/Clean Project. Они позволяют выбрать, какие проекты нужно собрать или очистить перед запуском конфигурации.
  • Поддержано свойство MSBuild UpToDateCheckInput
  • Интерфейс конфигураций запуска Publish to folder теперь поддерживает идентификаторы ARM и любые идентификаторы целевой среды выполнения.
  • Поставляемый в комплекте MSBuild обновлен до версии 16.5
Декомпилятор и IL Viewer

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

Мы добавили несколько новых функций в декомпилятор и IL Viewer: 

  • Декомпилятор поддерживает ссылочные типы, допускающие значение null. Обратите внимание: сейчас это работает только в объявлениях, а не в телах методов.
  • Поддержана декомпиляция членов интерфейса по умолчанию.
  • Улучшена поддержка декомпиляции имен компонентов кортежа.
  • Функция IL viewer теперь работает во внешних исходных файлах после декомпиляции.
Поддержка систем контроля версий

Поддержка систем контроля версий

  • Code Vision теперь умеет показывать историю метода. Эта функция включена по умолчанию вместо VCS Annotate (настраивается в меню Preferences | Editor | Code Vision | VCS Actions).
  • В окне Git Branches добавлено поле поиска и переработана кнопка Refresh.
  • В строке состояния появились индикаторы входящих (синие) и исходящих (зеленые) коммитов.
  • Мы обновили диалог перебазирования Interactively Rebase from Here.
  • В зависимости от того, какой системой контроля версий вы пользуетесь, окно Repositories теперь называется Git, Subversion, Mercurial или Perforce.
  • В представлениях Diff и Merge теперь работает подсветка.
  • Rider предложит загрузить и установить Git, если его нет на вашем компьютере.
Новые возможности для F#

Новые возможности для F#

Мы внесли много изменений и исправлений в поддержку F# и надеемся, они помогут вам в повседневной работе:

  • Добавлено действие Send project references to F# Interactive.
  • При отладке подсказка для вычислений, всплывающая по наведению курсора, теперь работает для большего количества выражений: квалификаторов, ссылающихся на самих себя, в методах и типах (this.Property) и выражений индексатора ("foo".[1]).
  • Добавлен шаблон файла Type.
  • Анализаторы кода теперь работают параллельно.
  • Мы добавили несколько новых быстрых исправлений для существующих инспекций, например Make field mutable (сделать поле изменяемым) для инспекции FS0005: Field not mutable.
  • Появилось несколько новых инспекций с соответствующими быстрыми исправлениями, например Redundant Attribute suffix (лишний суффикс атрибута).
  • Новые intention-действия для преобразования Elif в If и наоборот, а также для отрицания условия If-выражения.
  • В Code Vision добавлено новое действие Copy Inferred Type (копировать выведенный тип). Кроме того, больше не отображаются родительские пространства имен для типов, чтобы уменьшить объем информации на экране.
  • С помощью Extend Selection можно целиком выделить выражение в круглых скобках.

Подробнее об изменениях можно узнать в этом репозитории на GitHub.

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

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

  • Новые intention-действия для преобразования кода в optional chaining и/или nullish coalescing и для вывода параметров из использования.
  • Всплывающее окно документации открывается по наведению мыши на символ.
  • Поддержка Vuex и Composition API.
  • Запуск форматирования Prettier при сохранении файлов.
  • Полный путь к файлу в окне Go to.
  • Поддержка Yarn 2 в TypeScript-проектах.
  • Подробнее о новых возможностях для веб-разработки читайте на странице WebStorm.
Поддержка баз данных

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

  • Экпорт в Excel.
  • Поддержка тестовых фреймворков utPLSQL и Tsqlt.
  • Отображение результатов запросов в редакторе (по умолчанию отключено).
  • Новые способы аутентификации.
  • Общая конфигурация SSH.
  • Улучшенная фильтрация данных в MongoDB.
  • Все подробности о новых функциях для работы с базами данных вы найдете здесь: что нового в DataGrip 2020.1.
Другие улучшения

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

  • В Rider появилась долгожданная поддержка проектов WIX (Windows Installer XML Toolset). 
  • Для Rider 2020.1 доступен новый плагин, поддерживающий игровой движок Godot. Вот его открытый исходный код на GitHub. 
  • Настройки стиля кода C# теперь можно искать.
  • В Rider можно использовать тот же файл глобальных настроек, что и в ReSharper, если вы хотите, чтобы в обоих инструментах были одинаковые настройки (это поведение настраивается в меню File | Settings | Tools | ReSharper | Synchronize machine-wide Rider and ReSharper settings).
  • Мы добавили новую настройку форматирования C#-кода, касающуюся использования завершающей запятой. Вы найдете ее в меню Preferences | Editor | Code Style | C# | Syntax Style | Trailing comma. Она совместима с инспекцией StyleCop SA1413 (за исключением очень редких нетривиальных случаев).
И еще кое-что

И еще кое-что

  • Новый режим погружения Zen сочетает в себе Distraction Free Mode и Full-Screen Mode.
  • Теперь можно запускать несколько сеансов терминала одновременно, разделив окно терминала по вертикали и горизонтали. Параллельные сеансы открываются и закрываются через контекстное меню.
  • Мы подготовили много улучшений в HTTP-клиенте. Теперь работает автодополнение для URL-адресов, а также навигация из файлов HTTP-запроса прямо к соответствующим конечным точкам. Можно создавать HTTP-запросы в представлении Endpoints. Кроме того, автодополнение корректно работает для переменных пути.
  • Стандартная светлая тема IntelliJ Light теперь доступна во всех операционных системах.
  • На Windows 10 граница верхнего окна выглядит намного аккуратнее в режиме без рамок.

Что нового в IntelliJ IDEA 2020.1