Что нового в Rider

Rider 2020.3 — это долгожданная поддержка новых возможностей .NET 5, C# 9 и F# 5. Также это новое окно Immediate, Private Source Link в отладчике, диаграмма зависимостей проектов, режим Push-to-Hint и поддержка языка фреймворка Avalonia. Разработчики Unity смогут воспользоваться новым анализом Burst и поддержкой шейдеров. Также вы теперь можете разделять область реактора так, как вам хочется — попросту перетаскивая вкладки.

Поддержка .NET 5 и C#

Встречайте первый релиз Rider с поддержкой .NET 5! Это и генераторы кода, и новые возможности C# 9 и NuGet, и целевые фреймворки net5.0-windows и net5.0. А также разработка приложений .NET 5! Создание, сборка, запуск, отладка, профилирование, управление — в вашем распоряжении все инструменты для полного цикла разработки.

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

А что же Rider? Rider продолжает делать то, что умеет лучше всего, — прекрасно поддерживать новые возможности. Новая версия Rider учитывает сгенерированные файлы в своих рефакторингах, помогает вам в навигации по ним, и, конечно же, оснащает новыми полезными возможностями редактор кода.

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

Еще одна новая возможность — свойства init-only. Задать значения таким свойствам можно только в ходе инициализации объекта. А значит, вы наконец можете использовать инициализаторы объектов, не прописывая свойства как mutable.

Rider знает свойства init-only и учитывает их, когда выполняет генеративное автодополнение, анализирует, было ли свойство изменено, и предлагает быстрое исправление на случай, если вы передумали.

Свойства init удобно применять для типов record. Это ссылочные типы с семантикой значений, которые позволяют обеспечить неизменяемость. В данном случае неизменяемым станет весь объект. Rider же со своей стороны обеспечивает всей необходимой поддержкой — от быстрых исправлений, позволяющих выбрать стиль объявлений, до базового автодополнения.

У позиционных записей есть метод Deconstruct(), сгенерированный компилятором. Для таких объектов в Rider доступны все типы деконструкции. Когда вы объявите переменную, появится окно, предлагающее выбрать между одиночной переменной и объявлением деконструкции. То же самое произойдет, если вы запросите из функции свойство record-объекта.

Есть и ряд менее крупных изменений. Для локальных функций теперь разрешены атрибуты, а также параметры и параметры типов. Быстрые исправления Rider уже поддерживают это. Также вы можете добавлять методам аннотацию [NotNull] и [CanBeNull] при помощи ! и ? соответственно.

Новые возможности C# 9 позволяют писать высокоуровневые программы. Теперь вам не придется воевать с классами Program — код точки входа можно разместить сразу после директив using. Также Rider помогает в работе с операторами верхнего уровня. Для этих операторов есть два правила: во-первых, они должны предшествовать любым типам и пространствам имен; во-вторых, только один файл в проекте может содержать код верхнего уровня. Оба правила легко нарушить при реорганизации кода. Чтобы не допустить этого, Rider предлагает специальные быстрые исправления, которые переставляют код верхнего уровня в начало файла либо переносят его в отдельный файл.

Код верхнего уровня — это тоже код, и у Rider также есть для него рефакторинги: Extract local variable и Extract method.

Подробнее об операторах верхнего уровня в C# 9 читайте в нашем блоге.

С C# 9 появляется возможность target-typing, позволяющая не указывать тип после оператора new — вместо этого он будет автоматически определен из контекста. Rider полностью поддерживает эту возможность языка, в том числе позволяя вам просматривать все использования конструктора (при помощи действия Find Usages) и выбирать предпочитаемый стиль синтаксиса. Последнее позволяет вам использовать синтаксис new(), если тип очевиден, либо указать типы явно в остальных случаях.

Если же использование new() выйдет из-под контроля, вы всегда можете воспользоваться нашими специальными подсказками для типов.

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

Новая версия языка улучшает возможности сопоставления с образцами (паттернами). Задавая образцы, вы теперь можете использовать отношения (<, > и т. д.) и логические паттерны (not, or, and) — это намного проще, чем применять старые конструкции switch. Rider поможет вам проанализировать паттерны и переписать их в желаемом стиле.

Также мы добавили быстрое исправление для новых параметров discard в лямбда-выражениях.

Это были главные обновления языка. Есть ряд более мелких, и мы также поддержали их в Rider 2020.3. Они включают target-typing для условий, статические лямбды, методы расширения GetEnumerator для foreach, указатели на функции и нативные целочисленные типы.

Отладчик

Окно Immediate

Появилось новое окно Immediate с помощью при написании кода, позволяющее создавать синтетические переменные после срабатывания точки останова и экспериментировать с кодом, не перезапуская отладчик.

Окно Immediate появится в правом нижнем углу панели отладки (под переменными watch), как только вы начнете сессию отладки. Вы сможете ввести входные данные, как только исполнение приложения будет приостановлено (как правило, при срабатывании точки останова).

Вы сможете ввести любой код на C#. Вам также будет доступно автодополнение.

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

Вы можете вызывать методы доступных объектов и любые статические функции, существующие в текущем контексте, а также передавать доступные объекты в виде аргументов. Если вы вызовете функцию, в которой есть точка останова, Rider точно так же учтет ее и приостановит исполнение. Для вызова будет выделена своя часть стека (начинающаяся с вычисления функции) — вы можете следить за ней через панель Frames.

Вы можете запускать операторы, не присваивая их переменным. Rider запишет последнее значение, которое было возвращено, в $result. С историей выполнения всех операторов можно ознакомиться в окне Immediate.

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

Новые действия

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

Теперь при запуске отладки, чтобы попасть в определенную точку кода, вам не обязательно ждать выполнения всех предшествующих шагов. Используйте действие Start Debugging and Run to Here или Start Debugging and Run to Here Non-Stop, и Rider перенесет вас в нужное место, минуя точки останова.

Если вы хотите остановить исполнение на точке входа в программу, используйте действие Start Debugging and Step Over или Start Debugging and Step Into.

Действия доступны в Run | Debugging Actions главного меню.

Обращаем ваше внимание, что эти действия доступны только при использовании .NET Project configuration / .NET Static Method.

Private Source Link

Если вы знакомы с понятием «Private Source Link», то у нас есть для вас отличные новости: Rider 2020.3 обеспечивает полную поддержку частных серверов с исходным кодом — и в отладчике, и во встроенном декомпиляторе. Поддерживаются источники с GitHub, GitHub Enterprise, BitBucket и Azure DevOps (бывшего VSTS).

Вы можете сохранить данные учетной записи, чтобы в будущем упростить доступ к этим ресурсам.

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

  • Теперь вы можете вычислять результаты методов с параметрами out и ref, а также тех, которые объявляют переменные out в списке параметров.
  • Перечисление последовательностей IEnumerable стало значительно быстрее.
  • Ссылка View теперь корректно отображается для объектов с длинным представлением.
  • Длинные строки больше не усекаются, когда вы копируете их значения. Также мы оптимизировали вычисление таких строк.

Диаграмма зависимостей проектов

Наш новый инструмент позволяет визуализировать зависимости проектов и исследовать архитектуру решения.

Исследование диаграммы

Открыть диаграмму зависимостей проектов можно через Tools | Architecture | Show Project Diagram либо используя контекстное меню в Solution Explorer. Диаграмма отражает структуру вашего решения. Первоначально она покажет вам элементы верхнего уровня. Вы можете выбрать, какие проекты и папки решения вы хотели бы видеть. Также вы можете менять масштаб, включать табличный режим и добавлять заметки в качестве аннотаций к тем или иным проектам.

Навигация

Используйте Ctrl+F в Windows или Cmd+F в macOS, чтобы найти нужные проекты.
Кнопка Show Neighbors of Selected Nodes на панели инструментов позволит отфильтровать диаграмму, оставив лишь выбранный проект, его прямые зависимости и зависимые от него проекты.

Если диаграмма получилась обширной, вы можете открыть окно File Structure (View | Tool Windows | Structure) и легко перемещаться по ней, используя общий обзор диаграммы.

Оценка связности проекта

Нажав на иконку Enable Coupling Analysis на панели инструментов, вы сможете выполнить анализ связности проекта и обновить диаграмму. Толщина, цвет и стиль ссылок отражают то, насколько сильная связность наблюдается в проекте. Наведя указатель мыши на любую из ссылок, вы узнаете точное число использований. А если вы нажмете на ссылку, Rider соберет информацию о зависимом коде и отобразит ее в отдельном окне инструментов.

Также вы можете отобразить транзитивные зависимости. Rider покажет все прямые и непрямые зависимости вашего проекта.

Сохранение и сравнение снэпшотов

Сохраните снэпшот диаграммы зависимостей проекта (через панель инструментов), чтобы иметь возможность сравнить его с текущим решением. С помощью меню Tools | Architecture | Compare With Saved... вы можете загружать и исследовать сохраненные снэпшоты. Rider поможет вам, подсветив различия между диаграммами.

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

Экспорт диаграмм

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

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

Unity

Rider 2020.3 предоставляет улучшенную поддержку Unity. Обновления затронули анализ Burst, поддержку шейдеров, юнит-тестирование. Также мы внесли множество полезных исправлений.

Нажав на иконку рядом с любым методом, обозначенным атрибутом Unity [MenuItem], вы сможете запустить метод прямо из IDE.

Улучшения коснулись и умной поддержки шейдеров. Теперь, выполняя анализ кода, Rider может автоматически использовать определения из прагм, такие как shader_feature или target. В строке состояния появилась новая панель, указывающая, в каком контексте (по какому пути прохода) будет проанализирован шейдер.

Для анализа контекста Burst появился новый индикатор Code Vision, а также новые предупреждения на случай неправильного использования SharedStatic. Для быстрого добавления атрибута [BurstDiscard] воспользуйтесь меню Alt+Enter.

Новые контекстные действия позволяют более детально контролировать анализ методов, для которых важна производительность (например, Update). Теперь вы можете указать Rider, чтобы он не считал метод часто используемым, не подсвечивал как ресурсоемкий и т. д. Также теперь вы можете задать новый контекст производительности, начиная с любого метода.

Что касается юнит-тестирование, то мы поддержали атрибут [Explicit] и добавили новые возможности параметризации. Кроме того, теперь вы можете запускать тест-раны, содержащие как тесты в режиме редактирования, так и тесты в режиме игры.

Мы доработали интерфейс окна просмотра логов Unity. В частности, появилась возможность фильтровать записи на основании того, когда вы последний раз переключались в режим игры или перегружали AppDomain.

И, конечно же, мы исправили ряд имевшихся ошибок. В том числе, мы решили проблему с сообщением о бесконечном обновлении решения при отсутствии подключения к редактору Unity и добавили быстрое исправление, убирающее лишнее сообщение о событии. Также мы исправили неправильные C#-подсказки для player-проектов. Подробнее обо всех изменениях можно узнать здесь.

Rider для Unreal Engine Ранний доступ

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

Мы добавили интеграцию с UnrealHeaderTool — теперь вы можете отслеживать проблемы, специфичные для Unreal Engine, прямо в редакторе кода. При работе с проектом Unreal Engine Rider будет автоматически запускать UnrealHeaderTool для файла, который вы редактируете, показывая ошибки и предупреждения.

Посмотрите на интеграцию с UnrealHeaderTool в действии

Также появилась возможность анализировать поток управления для файлов шейдеров (HLSL). IDE предупредит вас о наличии недостижимого кода, неинициализированных переменных, избыточных веток условного оператора и других проблем. Такой же анализ доступен и в Rider 2020.3.

Мы добавили фильтры для Unreal Log. Теперь вы можете фильтровать лог по объему и категории, а также показывать либо скрывать временную метку. Также мы починили проблемы с зависанием интерфейса при накоплении большого количества сообщений в панели логов Unreal.

Плагин UnrealLink/RiderLink обеспечивает продвинутый уровень интеграции между JetBrains Rider и редактором для Unreal Engine от Epic Games. Теперь плагин доступен на JetBrains Marketplace. Вы можете установить его независимо от того, какая у вас сборка продукта.

Поддержка F#

Возможности F# 5

Мы добавили поддержку нового синтаксиса интерполяции строк. Чтобы сделать строку интерполированной, отметьте ее значком $. После этого добавьте заполнители в строковый литерал. Также для заполнителей поддерживается синтаксис «типизированных интерполяций» (%s и %d).

В Rider 2020.3 появилась поддержка ключевого слова nameof, которое позволит вам конвертировать практически любой символ F# в соответствующее имя.

Кроме того, мы поддержали объявление open type. С помощью него вы можете «открыть» любой тип и импортировать из него статический контент.

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

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

Для улучшения читаемости кода мы ввели новые подсказки с подсветкой синтаксиса. Большое спасибо Саулу за отличную реализацию.

Появились новые контекстные действия для аннотаций типов связывания let. За это также благодарим Мэтта.

Мы добавили возможность настраивать уровни значимости ошибок анализаторов, предоставленных с бэкенда ReSharper. Отмечаем, что большинство предупреждений и ошибок по-прежнему поступает от FCS.

Новые анализаторы и быстрые исправления:

  • Вы можете упрощать лямбды и даже заменять их на встроенные анализаторы функций.
  • Анализатор Redundant applications позволит удалить ненужные вызовы Ignore.
  • Анализатор Redundant patterns поможет улучшить код с точки зрения стиля.
  • Мы добавили новое быстрое исправление, позволяющее превращать пространства имен в модули.

Поддержка редактирования:

  • Улучшенное поведение Enter для вызовов методов.
  • Поддержка «Surround with Quotes».

Появилось новое действие, позволяющее переименовывать файлы, учитывая имена модулей или типов.

Отладчик теперь умеет лучше следить за локальными переменными в асинхронных рабочих процессах.

Улучшения пользовательского интерфейса

Обновленный начальный экран

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

Поиск в Solution Explorer

В Solution Explorer появился самый настоящий поиск! Он позволяет выполнять поиск по дереву решений (даже в свернутых узлах), проверяя файлы, папки, проекты, ссылки, анализаторы, импорты и пакеты, — предоставляя вам всевозможные результаты. Вы можете просматривать результаты по одному при помощи специального сочетания клавиш либо пользуясь иконками панели инструментов. Чтобы открыть поисковую строку, воспользуйтесь сочетанием клавиш Ctrl+F либо иконкой лупы на панели инструментов.

Перетаскивание вкладок

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

Right Split для открытия файлов

Мы добавили новое действие Open in Right Split для файлов (View | Open in Right Split либо Shift+Enter). Оно позволяет открыть файл, разделив поле редактора вертикально. Выполнить действие можно из окна Explorer либо из любого другого навигационного окна (Recent Files, Search Everywhere, Navbar), предварительно выбрав нужный файл.

Закрепленные вкладки

На вкладках, закрепленных в редакторе, теперь отображается специальный значок булавки. Кликните по нему, чтобы открепить вкладку. Вы также можете закреплять и откреплять вкладки, перетаскивая их на другие закрепленные и незакрепленные файлы. Если вы часто открываете много вкладок, будет удобно собирать все закрепленные вкладки в отдельный ряд. Чтобы включить эту функцию, перейдите в Preferences/Settings | Editor | General | Editor Tabs и поставьте галочку напротив Show pinned tabs in a separate row.

Подсветка синтаксиса в подсказках

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

Быстрый предпросмотр файлов

Теперь, кликнув по файлу, вы можете увидеть его содержимое во вкладке предпросмотра. При открытии вкладки имя файла будет указано курсивом. Если вы начнете редактировать файл, вкладка превратится в обычную. Чтобы включить эту функцию, нажмите на значок шестеренки на панели Project и выберите опцию Enable Preview Tab.

Действие Build в тачбаре

Для пользователей macOS в тачбаре появилось новое действие Build.

Система контроля версий

Теперь вы можете добавлять файлы на стейджинг прямо из Rider. Нажмите на значок «+», чтобы добавить файлы в новый узел Staged в окне Commit. Также это можно делать через поля редактора или панель Diff. Чтобы включить эту функцию, зайдите в Preferences/Settings | Version Control | Git и поставьте галочку напротив Enable staging. Подробнее об этой возможности читайте здесь.

В диалоге Search Everywhere появилась вкладка Git. Теперь здесь можно искать хэши, сообщения коммитов, теги и ветки.

Работать с ветками стало еще удобнее. Теперь Rider показывает все действия, доступные для выбранной ветки. Обращаем ваше внимание, что действия Merge into Current и Rebase Current onto Selected теперь называются Pull into Current Using Merge и Pull into Current Using Rebase соответственно.

Другие обновления для VCS:

  • Меню VCS теперь называется в соответствии с той системой контроля версий, которую вы используете.
  • Теперь патчи создаются в формате Git.

Плагины

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

Плагин для динамического анализа программ теперь доступен не только для Windows, но и для macOS и Linux. Вы можете использовать его для приложений на .NET Core 3.0 и выше.

Теперь, если вы отлаживаете код в привязке к запущенному процессу, плагин DPA позволит также проанализировать использование памяти.

Azure DevOps

Плагин Azure DevOps позволяет создавать новые серверные среды и импортировать существующие.

dotCover

С помощью плагина dotCover вы можете выполнять анализ покрытия приложений .NET 5 для Windows, macOS и Linux.

Окно Unit Tests Coverage позволяет отфильтровать результаты по целевому фреймворку.

Вы можете разрешить dotCover подсвечивать код в редакторе — через настройки плагина либо во всплывающем окне «Configure highlighting level».

Также теперь вы можете указать IDE, какие проекты необходимо собирать при запуске сессии непрерывного тестирования. Таким образом вы можете ускорить их.

dotTrace

Профилировщик производительности теперь позволяет профилировать приложения .NET 5 для Windows, macOS и Linux.

Мы добавили в профилировщик производительности новый флейм-граф. Он представляет собой визуализацию дерева вызовов и позволяет быстрее находить медленно работающие методы.

В плагине dotTrace для Rider теперь есть возможность свернуть дерево вызовов (ранее она была доступна только в dotTrace Standalone). Вы можете сворачивать цепочки вызовов, не относящиеся к пользовательским модулям и сборкам — так вам будет проще анализировать дерево вызовов.

Azure Toolkit для Rider

При использовании эмулятора хранилища Azurite теперь можно исследовать хранилище очереди. Вы можете просматривать содержимое сообщений, добавлять новые и т. д.

Мы добавили базовую поддержку запуска новой альфа-версии Azurite 3.9 с эмулятором табличного хранилища.

В Azure Functions проекты и конфигурации Run/Debug доступны в контекстном меню проекта — таким образом они всегда под рукой. Также мы обновили контекстные меню окна Azure Explore, сделав основные действия еще более доступными.

AWS Toolkit для Rider

  • Базовая поддержка Amazon Elastic Container Registry.
  • Поддержка локальной отладки лямбда-функций .NET Core 3.1 (требуется версия SAM CLI 1.4.0 либо более поздняя).
  • Более быстрая загрузка контейнеров S3.
  • Плагин больше не поддерживается в Rider 2019.3 — вам необходима версия 2020.1 или выше.
  • Подробнее на Marketplace.

Markdown

Мы улучшили интерфейс Markdown-редактора. Теперь вы можете настраивать формат Markdown через Preferences | Settings | Editor | Code Style | Markdown. Кнопка Auto-Scroll Preview, расположенная в правом верхнем углу редактора, синхронизирует прокрутку редактора и панели предварительного просмотра. Кроме того, мы добавили поддержку Mermaid.js.

Редактор кода

Встроенные подсказки

Встроенные подсказки довольно удобны, однако важно, чтобы они визуально не перегружали интерфейс. И мы придумали неплохой компромисс — механизм «Push-to-Hint».

В режиме Push-to-Hint встроенные подсказки по умолчанию не показываются. Просмотреть подсказку можно, удерживая клавишу Ctrl. Как только вы ее отпустите, подсказка исчезнет.

Перейдя в настройки, вы можете указать Rider, какие подсказки должны отображаться сами, какие — только по нажатию, а какие и вовсе можно скрыть. Используйте настройку «Visibility» для каждого вида подсказок.

Также появились подсказки для неявного приведения типов. Неявное приведение типов порой приводит к ухудшению производительности. Rider укажет вам на случаи неявного приведения типов в вашем коде.

Шапка файла

Теперь вы можете задать шаблон для шапки файла (Preferences/Settings | Editor | File Header Template). В нем вы можете указать информацию об авторских правах и компании, имя пользователя и т. д.

Настройки стиля кода и форматирования

Мы поддержали долгожданную возможность определять и конфигурировать настройки форматирования на основе образцов кода в редакторе. Для этого выделите участок кода, нажмите Alt+Enter и выберите Format Selection / Configure либо Format Selection / Detect Formatting settings. В открывшемся окне появится список настроек, соответствующих данным строкам. Значения, которые отличаются от стандартных, будут подсвечены. Также вы можете просмотреть отличающиеся настройки при помощи опции «Only show changed values».

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

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

  • Через настройки паттернов для свойств вы можете указать Rider, чтобы он размещал простые паттерны на отдельных строках и определенным образом оформлял длинные паттерны. Также вы можете настроить выравнивание паттернов свойств в столбцы.
  • IDE может сама добавлять пустые строки до и после аксессоров свойств и событий.
  • Для Visual Basic .NET есть возможность добавлять пробел после унарного оператора +/-.

Перейдя во вкладку Preferences/Settings | Editor | Code Style | C# | Syntax Style, вы можете выбрать предпочитаемый стиль синтаксиса для стандартных значений: default либо default(T).

Также мы обновили поддержку .editorconfig:

  • При экспорте в .editorconfig теперь есть новый параметр «Spaces around ‘=’». Для существующих файлов его значение определяется автоматически, а для новых файлов его можно прописать вручную. По умолчанию используется значение «true».
  • Мы поддержали чтение свойств Roslyn: file_header_templates, dotnet_sort_system_directives_first и dotnet_separate_import_directive_groups.

Теперь, находясь в редакторе, вы можете корректировать отступы для текущей строки при помощи клавиши Tab. Чтобы включить эту функцию, назначьте клавишу Tab действию Emacs Tab.

Поддержка Avalonia

Анализ кода

Как и полагается WPF-фреймворку, Rider умеет анализировать код и предлагает множество различных инспекций и быстрых исправлений — как для выделенного кода C#, так и для файлов .axaml, содержащих “Possible ‘System.NullReferenceException’” и “Class/Property {...} is obsolete: Use {...}”.

Помимо обычных WPF-инспекций есть множество инспекций, специфичных для Avalonia, например, «Path to resource is case-sensitive». Инспекция «ColumnDefinitions tag can be converted to attribute» предлагает контекстное действие для атрибута ColumnDefinitions="*,Auto,*", позволяющее конвертировать его обратно в тег <Grid.ColumnDefinitions>.

В Rider 2020.3 мы обновили поддержку синтаксиса связывания ($self, $parent, ^ и #), а также улучшили проверку индексов в массиве $parent[].

Также предлагается расширенная поддержка CompiledBinding и расширения x:CompileBindings. В частности, Rider проследит, чтобы вы указывали для привязок DataType.

Для множества свойств Avalonia доступно быстрое исправление «Create from usage».

Поддержка XAML Avalonia теперь включает понимание системы стилей по типу CSS.

Ну и не забывайте про встроенные подсказки! Они всегда помогут разобраться в коде.

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

Возможности автодополнения и просмотра информации о параметрах доступны для всех ключевых слов XAML, а также для расширений разметки, свойств x:Name, Style, свойств Source для StyleInclude и др.

Навигация

Вы можете легко переходить к скомпилированным типам связывания данных, типам элементов управления Avalonia и объявлениям x:Name. Rider также позволяет переходить напрямую от XAML к декомпилированному внешнему коду, в том числе к свойствам сеттеров стилей и указанным пространствам имен xmlns.

Find Usages (поиск использований)

С помощью действия Find usages вы теперь можете искать в коде связывание методов, использование атрибутов x:Name, классов и сеттеров Style, а также множества других свойств.

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

Рефакторинги Rename и Safe Delete теперь знакомы со множеством сценариев использования XAML-кода Avalonia и способны срабатывать точнее.

Иерархия и структура кода

Теперь вам доступно наглядное представление иерархии и структуры XAML-кода Avalonia.

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

Поддержка Blazor

Мы продолжаем дополнять поддержку Blazor. В этой итерации мы поддержали параметры generic и вывод типов для них на основе использований, а также устранили задержки при открытии решений. Полный список исправлений можно посмотреть в нашем публичном баг-трекере.

Поддержка Tailwind CSS

Rider 2020.3 позволяет эффективнее работать с Tailwind CSS. Установите плагин Tailwind CSS через Preferences / Settings | Plugins. Теперь IDE будет предлагать вам автодополнение для классов Tailwind, показывать ожидаемый CSS при наведении указателя мыши на код, а также помогать в работе с пользовательскими настройками файлов tailwind.config.js.

Быстрое создание React-компонентов

Реализовали не все React-компоненты? Наведите указатель мыши на нужное место, нажмите Alt+Enter и выберите Create class / function component — Rider создаст соответствующую конструкцию кода за вас.

Другие важные улучшения:

  • Возможность переходить к различным элементам JavaScript- и TypeScript-файлов из панели навигации (подробнее).
  • Улучшенное форматирование шаблонных литералов с CSS и HTML (подробнее).
  • Полная поддержка pnpm (подробнее).

Прочитайте статью Что нового в WebStorm, чтобы узнать обо всех улучшениях для веб-разработки, которые также присутствуют в Rider 2020.3.

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

SQL для MongoDB

Теперь вы можете запрашивать базы данных MongoDB при помощи SQL. Это стало возможным благодаря новому транслятору SQL в JavaScript.

Работают запросы SELECT и предложения JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT и OFFSET. Подробнее обо всем, что мы поддержали, читайте здесь.

Поддержка Couchbase

Наша семья растет: мы поддержали Couchbase! Обращаем ваше внимание, что Rider работает с Couchbase Query, а не с Couchbase Analytics.

Аутентификация через Azure AD

Теперь вы можете подключиться к базе данных Azure SQL через Active Directory.

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

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

Юнит-тестирование

Используя меню Alt+Enter, вы теперь можете запускать юнит-тесты для определенных фреймворков прямо из редактора.

Экспортировать результаты запуска юнит-тестов можно из вкладки Unit Test Session.

Xamarin

Для тех, кто занимается настройкой iOS-проектов через файлы «information property list», мы добавили новый умный редактор для Info.plist в проектах Xamarin.iOS для любых платформ. Вам больше не понадобится обращаться к Xcode.

Разное

  • Конфигурации запуска, хранимые в виде файлов, теперь добавляются в папку Run Configurations решения. Это помогает Rider корректно обрабатывать конфигурации запуска, хранимые в пользовательских папках.
  • Теперь вы можете хранить шаблоны конфигураций запуска в виде файлов и делиться ими через VCS.
  • Мы добавили возможность выполнять арифметические операции из Search Everywhere.
  • Вы можете синхронизировать тему интерфейса IDE с системными настройками Windows и macOS. Для этого зайдите в Settings | Appearance & Behavior | Appearance | Theme и выберите опцию Enable the Sync with OS.
  • Анализ ошибок по всему решению стал на 25% эффективнее благодаря отключению вычисления времязатратный инспекций.