ReSharper 2022.3 представляет базовую поддержку новых возможностей C# 11, включая литералы UTF-8, локальные типы файлов, статические виртуальные члены, сопоставление span с образцом и др. В этой версии мы переработали подсветку кода, реализовали обнаружение уязвимых зависимостей NuGet-пакетов, а также включили импорт и экспорт диаграмм зависимостей типов и проектов в формате GraphML. Кроме того, появилась ранняя поддержка Microsoft Visual Studio, запущенной на ARM64.
Доступна бесплатная пробная версия на 30 дней
Мы доработали базовую поддержку новейших возможностей C# 11:
Мы добавили базовую поддержку литералов UTF-8
. Теперь анализ кода предлагает для литералов суффикс u8
вместо метода System.Text.Encoding.UTF8.GetBytes()
или байтового массива с соответствующими символами UTF8
. Кроме того, добавлен набор предупреждений и ошибок компилятора для литералов UTF-8
.
В базовую поддержку локальных для файла типов входит распознавание нового синтаксиса, модификатор доступа file
для типов, а также предупреждения и ошибки компиляторами с соответствующими быстрыми исправлениями, например Move class to outer scope, если модификатор file
указан для вложенного класса. Кроме того, добавлено удобное контекстное действие для преобразования общего типа в локальный для файла.
В новой версии ReSharper может преобразовывать обычные и буквальные строки в сырые. Благодаря этому множество существующих функций стало теперь доступно и для сырых строк.
В новой версии мы добавили предложения по использованию нового синтаксиса C# 11 для шаблонов списков при проверке соответствующих элементов коллекции. Это заменяет привычные проверки длины для коллекций с последующим использованием выражения доступа к индексатору.
Начиная с версии C# 11, можно использовать в интерфейсах модификаторы abstract
и virtual
для статических (static
) членов и использовать такие члены в дженериках с параметрами типа, обусловленными соответствующим интерфейсом. В новой версии ReSharper можно обрабатывать полиморфные static
-члены так же, как и обычные полиморфные члены:
override
включают в себя также члены интерфейса, поэтому теперь удобно реализовать абстрактные или virtual static
члены. >>>
) Теперь ReSharper распознает громоздкий шаблон кода, который C#-разработчикам приходится писать для выполнения беззнакового сдвига вправо для типов данных со знаком, и предлагает использовать вместо него оператор беззнакового сдвига (>>>
), который есть в C# 11.
Если вы обрабатываете диапазоны (Spans) символов, то, вероятно, часто пользуетесь методом MemoryExtensions.SequenceEqual
. C# 11 упрощает такие проверки. Теперь диапазоны символов можно просто сравнить с образцами строковых литералов, используя выражения is
или switch
.
Новая версия ReSharper предлагает использовать выражения is
или switch
вместо многочисленных выражений if
.
ref
и ключевое слово scoped
Начиная с версии C#11, можно объявлять поля ref
внутри ref
struct. ReSharper поддерживает это новое синтаксическое правило, обеспечивает все необходимые ошибки и предупреждения компилятора, показывает кодовое слово ref
в вариантах автодополнения кода и позволяет инициализировать такие поля в конструкторе.
ReSharper также знает новое ключевое слово scoped
, которое можно использовать для аргументов и локальных переменных by-ref
или ref struct
. Поддержка включает в себя корректную обработку нового синтаксиса, использование ключевого слова scoped
в автодополнении кода, а также сохранение ключевого слова scoped
при переопределении метода. Кроме того, IDE проверяет совместимость модификаторов scoped
и предлагает быстрые исправления для несоответствующих параметров scoped
при переопределении, реализации интерфейса и преобразовании делегатов.
В C# 11 и .NET 7 были также изменены правила безопасности языка для ссылок ref
. Эти изменения определяют, какие операции доступны для переменных by-ref
и ref struct
, чтобы обеспечить безопасность ссылок в управляемом коде за счет введения полей ref
. ReSharper учитывает эти изменения и поможет разработчикам найти те части проекта, которые необходимо обновить и аннотировать, используя новое ключевое слово scoped
, при переходе на C# 11 или .NET 7.
В этой версии мы внесли несколько изменений в поддержку языковых вставок:
Языковые вставки теперь работают в сырых строках C# 11.
ReSharper поддерживает атрибут [StringSyntax]
из .NET 7 и различные варианты синтаксиса для внедрения кода и автодополнения.
Новый значок на полях редактора сообщает пользователям об неявном импорте пространства имен в файлах C# и Razor.
Нажав Alt+Enter, когда курсор находится в соответствующей строке, вы получите полный список неявных импортов и информацию об исходном файле, где находятся соответствующие директивы global using. Если вы выберете конкретное импортированное пространство имен, ReSharper переведет вас к месту, где оно объявлено, включая переход к тегам <Using Include="Some.NameSpace" />
в файле проекта .csproj
.
Кроме того, ReSharper показывает глобальные импорты из _Imports.razor
и позволяет перейти к соответствующим определениям импорта.
В .NET 7 были добавлены числовые типы Int128
и UInt128
, поэтому мы обновили предложения автодополнения для спецификатора формата.
Кроме того, мы добавили поддержку типов даты и времени DateOnly
и TimeOnly
из .NET 6, а также для числового типа с плавающей точкой половинной точности Half
, появившегося в .NET 5. Раньше IDE эти типы не поддерживала.
Иногда после рефакторинга выражения, соответствующие шаблону, могут превратиться в тривиальные рекурсивные шаблоны. В этом случае, возможно, не стоит использовать синтаксис рекурсивных шаблонов, поэтому новая версия ReSharper предлагает действие, преобразующее шаблоны в более простые выражения с сохранением исходной семантики, соответствующей шаблону.
Иногда при написании кода после вызова разработчик практически не получает осмысленных предложений. Это происходит, когда вызов не привел к появлению какого-либо значения, если был вызван метод, возвращающий void
. Обычно, чтобы понять это, нужно выполнить несколько действий в IDE: вернуться назад и перейти к объявлению метода или навести мышь на вызов. В этой версии мы добавили подсказку void
для вызовов такого типа, возвращающих void
. Теперь разработчик сразу получает информацию о типе, который станет результатом вызова. Если принять предложение void
, после вызова будет добавлена точка с запятой, если ее там еще не было.
В ReSharper 2022.3 доработана подсветка кода и подчеркивания. Из-за различий во внутренней логике ReSharper раньше конфликтовал с анализаторами стиля кода Microsoft Roslyn, и в результате появлялись перекрытия подсветки или одна и та же подсветка отображалась в разных местах, а подчеркивания дублировались. Теперь для большинства таких случаев различия в логике устранены, а в тех нечастых ситуациях, когда проблема возникает, добавлены ошибки с четкими указаниями по устранению конфликта.
Использование в решении пакетов NuGet с открытым исходным кодом может привести к появлению уязвимостей. И хотя для предотвращения таких угроз есть специальные инструменты NuGet, гораздо удобнее иметь такой инструмент прямо в IDE, чтобы обнаруживать уязвимости на этапе проектирования. Поэтому мы добавили в ReSharper функцию выявления уязвимых зависимостей. Начиная с этой версии, в файлах .csproj
и .vbproj
все пораженные зависимости будут подсвечиваться.
ReSharper теперь можно интегрировать в Visual Studio на устройствах с процессорами ARM. Мы предоставляем начальную поддержку всех основных процессов разработки, за исключением проверки орфографии с помощью ReSpeller.
Мы также обновили установщик, чтобы обеспечить поддержку x64 и ARM64. Правильная версия будет установлена автоматически в соответствии с архитектурой вашего процессора.
dotPeek, dotMemory, dotTrace и dotCover, а также инструменты командной строки ReSharper теперь можно запускать в Windows ARM64.
Встроенный декомпилятор в версии 2022.3 поддерживает:
static abstract
и static virtual
; checked
; Окно IL Viewer теперь может декомпилировать код на разных уровнях языковых конструкций C#. Доступны два уровня C#: верхний уровень, где некоторые синтаксические конструкции упрощены благодаря новым возможностям языка, и нижний уровень, где можно посмотреть эти конструкции без синтаксического сахара.
ReSharper теперь позволяет сохранять и импортировать диаграммы зависимостей типов и проектов в формате GraphML, сохраняя возможность использовать диаграмму в качестве карты кода и быстро перемещаться по зависимостям.
В динамический анализ программы (DPA) добавлены новые инспекции. Они помогают найти различные проблемы с использованием баз данных, в том числе:
Новые инспекции доступны для всех приложений, использующих Entity Framework Core и .NET Data Provider для SQL Server.
В ReSharper C++ 2022.3 появилась экспериментальная поддержка модулей из C++20. Мы обновили языковой движок и многие функции ReSharper C++ для работы с новой моделью компиляции, поддерживающей как именованные модули, так и заголовочные блоки.
ReSharper C++ 2022.3 обеспечивает полную интеграцию с clang-format. Теперь при форматировании файлов вы можете переключаться между собственным механизмом форматирования ReSharper и исполняемым файлом clang-format. ReSharper C++ запускает clang-format в отдельном процессе. Это обеспечивает полную совместимость с популярным форматтером, а также повышает производительность и расширяет возможности форматирования.
Доступна бесплатная пробная версия на 30 дней