Что нового в ReSharper 2022.1

Первый релиз ReSharper в 2022 году предлагает в основном качественные улучшения и исправления ошибок, в частности расширение поддержки Blazor и C#.

Скачать

Доступна бесплатная пробная версия на 30 дней

Поддержка C#

Мы продолжаем улучшать поддержку C# 10, в частности глобальных using-директив. добавлены два новых рефакторинга и соответствующие контекстные действия.

Рефакторинг Extract Global Using поможет внедрить в проект директивы global using. Если запустить его для обычных директив using, ReSharper предложит вынести их в файл GlobalUsings.cs (если в проекте такого файла нет, ReSharper его создаст). В таком случае обычная директива using станет не нужна и будет удалена из файлов проекта.

Рефакторинг Inline Global Using поможет заменить глобальную директиву using на обычную. Если вызвать рефакторинг для глобальной директивы using, ReSharper удалит ее из GlobalUsings.cs и добавит соответствующую директиву using во все файлы проекта, где она необходима.

Директивы global using поддерживаются функцией анализа кода для методов расширения, а также в Find Usages.

Мы рассмотрели предстоящий C# 11 и добавили поддержку обобщённых атрибутов.

Cсылочные типы, допускающие значение null

  • Мы разделили предупреждения, которые отображаются при проверке на допустимость значения null, на две категории — в зависимости от типа выражения: для выражений, которые никогда не принимают значение null из-за аннотации NRT, и для выражений, проверка которых осуществляется во время выполнения.
  • Теперь можно переключаться в режим runtime enforced not null warnings only. Новая настройка доступна в меню Alt+Enter для предупреждений annotation-based.
  • Мы поддержали аннотации [MemberNotNull] и [MemberNotNullWhen] для проектов, в которых не используются ссылочные типы, допускающие значение null.

Конечные точки

Поддержка конечных точек теперь работает для маршрутизации минимального API из ASP.NET Core 6 и конвенциональной маршрутизации. Вы можете пользоваться возможностями навигации, анализа кода и автодополнения.

Razor и Blazor

Главные улучшения для Razor и Blazor в этой версии:

  • Теперь ReSharper поддерживает атрибут [EditorRequired] из .NET 6. Вы можете использовать соответствующую инспекцию и быстрое исправление, когда ссылаетесь на компоненты Blazor, не указывая требуемые параметры.
  • Реализована долгожданная поддержка локальных функций C# в рамках синтаксиса Razor.
  • Мы улучшили функцию очистки кода в файлах .razor с компонентами Blazor: теперь она не удаляет объявления @using.
  • Контекстные действия If To Switch и Invert If теперь работают корректно для кода Razor со ссылками на компоненты Blazor.
  • Мы откорректировали правила именования, используемые ReSharper для внедренных свойств Blazor.
  • Действие Comment with Line Comment стало работать корректно для кода Razor.
  • Теперь можно перемещаться по иерархии наследования в коде Razor. Базовые и производные символы отмечаются на полях редактора — это позволяет легко выполнять навигацию.

Очистка и форматирование кода

Мы реорганизовали элементы меню Alt+Enter, относящиеся к очистке и форматированию кода. Теперь опции Format selection, Cleanup selection и Apply syntax style вы найдете под пунктом Reformat and Cleanup.

Кроме того, можно настраивать стиль синтаксиса с помощью действий Configure code style и Autodetect code style settings. На панели Preview code style также отображаются изменения стиля синтаксиса.

Юнит-тесты Unreal Engine

Добавлена поддержка тестового фреймворка Unreal Engine. Теперь ReSharper C++ распознает юнит-тесты Unreal Engine. В редакторе рядом с каждым тестом отображаются значки для запуска и отладки тестов и целых тестовых наборов. Посмотреть результаты, а также перезапустить тесты (выборочные, только упавшие или все подряд), можно в окне Unit Test Sessions.

Что нового в ReSharper C++ 2022.1

Расширенная поддержка C++

ReSharper C++ 2022.1 лучше справляется с неявным запуском конструктора. Теперь вы также можете искать использования и переходить к коду вызванного конструктора для:

  • функций создания стандартных (make_unique/make_shared) и специфичных для Unreal (MakeShared/MakeUnique) умных указателей;
  • методов контейнера типа emplace;
  • преобразований типов static_cast или в стиле C.

Также ReSharper C++ 2022.1 показывает предупреждение, если перегруженная функция типа emplace вызвана с неверными аргументами.

Что нового в ReSharper C++ 2022.1

Генераторы кода

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

Это дает возможность не запускать генераторы кода до компиляции, что уменьшает суммарную нагрузку на процессор. Насколько увеличится производительность, зависит от того, используются ли генераторы другими функциями (например функцией полнострочного автодополнения Visual Studio).

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

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

Что касается режима запуска ReSharper вне процесса, мы продолжаем работать над его реализацией. Ознакомьтесь с последним обновлением в нашем трекере.

ReSharper Command Line Tools

Инструменты InspectCode теперь могут генерировать выходные файлы, совместимые с форматом SARIF (Static Analysis Results Interchange Format).

Инструменты командной строки теперь поддерживают Alpine Linux.

Декомпиляция

  • Интегрированный компилятор теперь отображает документирующие комментарии XML для сборок платформы, даже если имена этих сборок отличаются от имен файлов XML-документации (например, System.Private.CoreLib). Путь к XML-документации указывается в шапке декомпилированного файла.
  • Мы отключили перенаправление навигации в представлении Metadata.
  • Среди свойств blob-объектов появилось декодированное/RAW-отображение.
  • Assembly Explorer теперь поддерживает перенаправляемые типы (атрибуты [TypeForwardedTo]). Действие Locate in Metadata теперь также работает для ресурсов, перенаправляемых типов и ссылок на сборки и модули.
  • Мы улучшили навигацию PDB для типов без точек следования, таких как интерфейсы или перечисления.

Что нового в dotPeek 2022.1

Улучшенная поддержка событий SQL Server dotUltimate

Теперь dotTrace поддерживает события SQL Server провайдера Microsoft.Data.SqlClient на Windows (.NET Core, .NET 5+), а также на macOS и Linux (.NET Core 3.0+, .NET 5+).

Что нового в dotTrace 2022.1

Подключение к приложениям при помощи Drag-and-Drop dotUltimate

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

Что нового в dotMemory 2022.1

Исключение кода из анализа покрытия при помощи комментариев dotUltimate

Теперь вы можете исключать выборочные строки или фрагменты кода из анализа покрытия при помощи комментариев. Есть несколько способов сделать это:

// dotcover disable
var i = 1;
var j = 10;
// dotcover enable

/* dotcover disable */ var i = 1; /* dotcover enable */

var i = 1; // dotCover disable this line

// dotcover disable next line
var j = 100;

Какой бы вариант вы ни выбрали, нужно указать пакет JetBrains.dotCover.MSBuild NuGet в качестве зависимости. Он необходим только при разработке и не будет включаться в проект во время исполнения.

Что нового в dotCover 2022.1

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

  • Мы улучшили рефакторинг Move type to file, также включающий контекстное действие и быстрое исправление. Теперь в базовых случаях вместе с типом переносятся и директивы препроцессора.
  • Мы исправили проблему многочисленных изменений в файловой системе. Оказалось, что она возникала из-за переполнения буфера событий: ReSharper без надобности проверял все файлы решения, что сильно нагружало процессор и в некоторых случаях приводило к зависанию интерфейса.
  • Мы исправили проблему, которая мешала работе с файлами .sqlproj в локализованных версиях Visual Studio.
  • В ReSharper появилось древовидное представление Metadata (только для Visual Studio 2022). С ним удобно просматривать элементы метаданных сборки и выполнять поиск, переходить к исходникам и пр. Полный список функций можно найти в документации dotPeek — этот декомпилятор первым получил эти возможности.
  • ReSharper иногда подсвечивал код красным при переключении веток Git, что вызывало ряд проблем. Мы выявили несколько сценариев, в которых это происходило, и внесли исправления.
Скачать

Доступна бесплатная пробная версия на 30 дней