.NET Tools Releases

ReSharper 2021.1: обновление анализа кода, поддержка шаблонов маршрутизации ASP.NET и возможность переименовывать компоненты кортежей

Read this post in other languages:
English

Мы рады представить ReSharper 2021.1 — первый релиз в этом году. Готовя его, мы не ограничивали себя какой-то конкретной задачей или кругом вопросов, а просто постарались сделать свой инструмент еще удобнее. Но при этом все равно не удержались и добавили несколько новых возможностей. Многое было улучшено в анализе кода: мы доработали поддержку C# 9.0 и обновили движок в целом. Кроме того, мы добавили поддержку шаблонов маршрута ASP.NET и улучшили юнит-тестирование. Даже новый рефакторинг сделали! А теперь обо всем подробнее.

ReSharper 2021.1

ReSharper

Анализ кода

Значительно улучшена поддержка записей (records): теперь их корректную обработку обеспечивают рефакторинги Extract interface и Extract superclass, функция File Layout, Find Usages для первичного конструктора и возможности, связанные с XML-документацией. Добавлены новые инспекции и быстрые исправления, которые позволяют превратить код в записи: Redundant explicit property declaration, To record и To explicit constructor. Кроме того, теперь анализ кода лучше работает с избыточным кодом в записях, предлагая заменить пустое тело объявления типа record на точку с запятой.

Еще одна новая инспекция в этой версии — Inline temporary variable. Если вы случайно используете разные имена для одного значения, она поможет устранить ошибку, встроив переменную.

А если переменная должна была при дальнейшем исполнении измениться или инициализироваться другим значением? Это тоже ошибка, и инспекция укажет на это.

Еще мы расширили возможности использования инспекции Merge into pattern: теперь она охватывает больше шаблонов кода.

Мы выпустим специальный пост об анализе кода в версии 2021.1. Не пропустите!

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

Шаблоны маршрута часто используются в MVC-приложениях для соотнесения HTTP-запросов и URL-адресов. В версии 2021.1 мы ввели поддержку шаблонов маршрута для маршрутизации на основе атрибутов и будем в дальнейшем ее расширять. Теперь вы можете использовать автодополнение и реорганизацию кода, структурную навигацию, а также возможность, которой нам самим очень не хватало — рефакторинг Rename для параметров маршрута. Что касается анализа кода, ReSharper может проверить шаблон маршрута на синтаксические ошибки и проанализировать параметры маршрута. После этого он подсветит дубликаты объявлений параметров и предложит добавить отсутствующие параметры, исправить некорректные ограничения и нарушения ограничений. ReSharper работает также и с ограничениями, задаваемыми пользователем.

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

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

При этом внутри рефакторинг Rename для компонентов именованных кортежей устроен совсем иначе, чем обычный. В частности, поиск использований выполняется по структуре: рефакторинг находит кортежи, имеющие одинаковое количество компонентов с одинаковыми именами. Более того, чтобы найти все места, где должно использоваться новое имя, рефакторинг должен отслеживать, откуда берутся значения кортежа и куда они подставляются. Еще один сложный аспект этой функции — возможность вызова рефакторинга Rename при использовании компонента кортежа. Иногда это может представлять проблему, но в большинстве случаев рефакторинг корректно находит целевые вхождения, которые необходимо изменить.

Производительность

Задачи, связанные с оптимизацией производительности, — одни из важнейших
в нашем бэклоге. Мы сами работаем с масштабным решением и понимаем, что производительность играет ключевую роль. Мы по-прежнему работаем над перемещением части сервисов ReSharper в отдельный процесс и поддержкой режима «‎out of process»‎, но при этом продолжаем улучшать производительность там, где это возможно. Вот что ждет вас в этом обновлении:

  • Теперь вы можете быстрее печатать в файлах Razor, являющихся частью объемных решений.
  • Теперь вы можете быстрее печатать в объемных файлах, где работают анализаторы ReSharper.
  • Подсказки данных в отладчике стали быстрее и отзывчивее.
  • Мы оптимизировали работу ReSharper с документами общего доступа — теперь IDE потребляет при этом меньше памяти.
  • Мы улучшили производительность юнит-тестирования на JavaScript и TypeScript.
  • Мы продолжаем решать задачи, связанные с производительностью. Мы попробовали — пока что только на внутренних проектах — использовать новые счетчики производительности, но, к сожалению, реальной пользы они не принесли, и сейчас мы их переделываем.

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

Мы постоянно добавляем новые возможности форматирования. В этой версии появились настройки для скобок target-typed оператора new(), переноса строки перед оператором присваивания и отрицательного отступа для меток. Кроме этого, мы изменили порядок, в котором применяются пользовательские правила именования: сначала учитываются более узкие правила.

Мы добавили новое действие для Format Selection. Теперь можно указать, чтобы для выбранного кода ReSharper не выполнял процесс переформатирования полностью, а лишь регулировал отступы.

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

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

Мы реализовали поддержку адаптеров VSTest, позволяющих находить тесты, написанные с помощью сторонних фреймворков, и запускать их. Включить эту функцию можно в разделе ReSharper | Options | Tools | Unit Testing | Test Frameworks | VSTest.

Мы также добавили поддержку MSTest для проектов Universal Windows Platform в Visual Studio 2019.

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

  • Появилось действие, позволяющее копировать ссылки на GitHub при использовании Copy FQN.
  • Появилось новое действие —  Navigate to Windows Explorer. Вы найдете его в меню Navigate | Navigate to, либо нажав Ctrl+Shift+A и введя название действия.
  • Функция расширения/сужения области выделения теперь работает с регулярными выражениями в строках C#, VB или JavaScript, включая Razor pages.
  • Мы добавили подсказки приведения типов для кортежей.
  • В меню File Layout для методов теперь доступно ограничение Body. Оно позволяет указывать различные правила для методов с телом-блоком и телом-выражением.

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

Подробнее об этом релизе ReSharper читайте на нашем сайте.

ReSharper C++

Поддержка языка C++

В ReSharper C++ 2021.1 мы поддержали несколько новых языковых возможностей C++20 и C++17: классы в параметрах non-type в шаблонах, правила выведения аргументов шаблонов классов и noexcept в составе типа функции. Также мы пополнили шаблоны базового и постфиксного автодополнения новыми элементами для корутин: co_await, co_yield и co_return.

Стиль синтаксиса C++

Благодаря новому набору настроек стиля вы можете автоматически применять выбранный стиль синтаксических конструкций в своем проекте. При помощи соответствующих инспекций, быстрых исправлений и новых контекстных действий Apply Syntax Style и Cleanup selection вы сможете легко обновить кодовую базу и соблюдать единый стиль кода.

Прочитайте пост в нашем блоге, посвященный всем новым функциям и улучшениям ReSharper C++.

dotPeek

Управление вкладками

Теперь вы можете закреплять вкладки, если работаете с несколькими одновременно. Цвет вкладки теперь обозначает тип кода, который вы в ней увидите: зеленый — для представления метаданных, коричневый — для источников из файлов символов. Закрепление и окрашивание вкладок можно отключить в разделе Tools | Options | Environment | Tabs.

Стили кода и форматирование

Мы обновили инструмент форматирования для декомпилированного кода — теперь он включает ряд опций для настройки отображения кода. Теперь вы можете выбрать стиль и размер отступов, настроить перенос открывающей скобки на новую строку, указать, что вы хотите использовать члены, тело которых представляет собой одно выражение. Эти настройки можно найти в разделе Tools | Options | Decompiler | Code style and formatting.

Также мы исправили много ошибок, подробную информацию вы найдете в нашем баг-трекере.

dotTrace

  • Новый начальный экран

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

  • Консольный профилировщик как глобальный инструмент .NET

    Профилировщик командной строки dotTrace можно установить и использовать как глобальный инструмент dotnet:
    dotnet tool install --global JetBrains.dotTrace.GlobalTools --version 2021.1.0

dotMemory

  • Новый начальный экран

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

  • Поддержка дампов памяти Linux

    Теперь вы можете анализировать дампы памяти приложений .NET Core, полученные с Linux-систем при помощи gcore.

  • Улучшенный анализ распределения памяти

    Теперь dotMemory позволяет анализировать распределение памяти на любых интервалах времени. Просто выберите интервал на ленте времени — представление Memory Allocation покажет вам объекты, которым была выделена память за этот промежуток времени, а также соответствующую трассировку стека.

dotCover

  • Обновление настроек фильтрации в ReSharper

    Теперь ReSharper позволяет настраивать фильтры покрытия в Visual Studio так же, как в JetBrains Rider.

  • Инструмент запуска из консоли dotCover как глобальный инструмент .NET

    Вы можете установить и использовать инструмент запуска dotCover из консоли как глобальный dotnet-инструмент: dotnet tool install –global JetBrains.dotCover.GlobalTools –version 2021.1.0

Пожалуйста, сообщите нам, как вы оцениваете версию 2021.1. Мы будем рады получить ваши отзывы в комментариях ниже, в социальных сетях или через наш баг-трекер. Спасибо!

Ваша команда ReSharper
The Drive to Develop

Discover more