В ReSharper 2021.1 мы обновили анализ кода, поддержали шаблоны маршрута ASP.NET, добавили возможность переименовывать компоненты кортежей и многое другое.
Доступна бесплатная пробная версия на 30 дней
Инспекция Merge into pattern теперь охватывает больше шаблонов. Объединяйте проверки на null с другими проверками в единый шаблон:
Переделывайте выражения conditional?.Access
во вложенные сопоставления шаблонов:
Сокращайте вложенные операторы if
, объединяя проверки:
И наконец, вы можете соединять шаблоны с деконструкцией:
Мы расширили поддержку типов Record (из C# 9.0). Для объявлений типов record
теперь работают рефакторинги Extract interface и Extract superclass, а также File Layout и различные возможности, связанные с XML-документацией.
Мы добавили ряд новых инспекций и действий. Использование Redundant explicit property declaration для свойств в объявлениях типов record
поможет при переходе на код, использующий типы Record с позиционными параметрами и неявными объявлениями свойств. Есть и соответствующее быстрое исправление — Remove explicit property.
Если вам захочется превратить record
в class
, используйте действие To class, которое позаботится о позиционных параметрах и первичном конструкторе. Также есть действие To record, работающее противоположным образом.
Если вам нужно превратить позиционные параметры и первичный конструктор в обычные свойства, конструктор и явный метод Deconstruct()
, вы можете использовать контекстное действие To explicit constructor.
Соблюсти порядок также поможет инспекция Redundant 'record' type declaration body (и соответствующее быстрое исправление). Она позволяет заменять пустое тело объявления record
на точку с запятой.
Действие Find usages теперь умеет находить использования первичного конструктора Record и неявного метода Deconstruct()
.
Представляем вам новую инспекцию Inline temporary variable. Иногда может оказаться, что вы используете одно и то же значение под разными именами. Хотелось бы сделать такой код более прозрачным — возможно ли это? Возможно! И ReSharper поможет вам в этом.
Он даже поможет вам отследить ошибки в случае, если временная переменная должна была проинициализироваться другим значением или изменить значение при дальнейшем исполнении.
Логические конструкции not делают проверки типов более читаемыми. ReSharper предлагает замену синтаксиса !()
на конструкцию not.
Вместо Slice
и Substring
ReSharper теперь предлагает использовать оператор диапазона, если это позволяет упростить код.
Мы отключили инспекцию Namespace does not correspond to file location для файлов с кодом верхнего уровня.
Появилась инспекция, проверяющая, можно ли заменить автосвойство на вычисляемое свойство, и соответствующее быстрое исправление для выполнения замены.
Мы сделали первые шаги в сторону поддержки C# 10.0 и научили ReSharper работать с интерполяцией константных строк.
Мы выпустим отдельный блогпост об анализе кода в версии 2021.1. Не пропустите!
Шаблоны маршрута часто используются в MVC-приложениях для соотнесения HTTP-запросов и URL-адресов. В версии 2021.1 мы ввели поддержку шаблонов маршрута: работая с ними, вы можете пользоваться структурной навигацией, инспекциями и быстрыми исправлениями. Рассмотрим несколько примеров.
Базовые инспекции проверяют шаблоны маршрута на предмет синтаксических ошибок, таких как размещение маршрута с параметрами catch-all посреди шаблона, объявление опционального параметра catch-all, назначение опциональному параметру значения по умолчанию и т. д.
Параметры маршрутов порождают интересные ситуации. Что если вы объявите параметр с одним и тем же именем в контроллере и в действии? ReSharper сообщит вам об этом.
Также вы можете пропустить параметры. Тогда ReSharper предложит вам добавить их, исходя из действия либо атрибута контроллера. Если присутствует ограничение типа, IDE использует его для вывода типа параметра.
Отграничения также позволяют выполнять анализ кода. ReSharper проверяет, корректно ли само ограничение и удовлетворяет ли его условию параметр.
Также при помощи ограничений ReSharper анализирует, можно ли сделать тип параметра более строгим, в случае чего IDE предложит вам замену. Если вы намеренно использовали не тот тип, который предлагается, просто отклоните преложение.
ReSharper также работает с ограничениями, задаваемыми лично пользователем. Если такое ограничение не распознается (такое иногда бывает), добавьте к классу ограничения аннотацию [RouteParameterConstraint]
(из JetBrains.Annotations).
Также вы можете пользоваться автодополнением кода, структурной навигацией и возможностями реорганизации кода.
Переименовывать параметры маршрута теперь можно не только вручную — вы можете пользоваться рефакторингом Rename.
Все эти возможности работают для маршрутизации на основе атрибутов. Мы очень ждем ваших отзывов!
Подробнее о шаблонах маршрута ASP.NET читайте в нашем блоге.
Именованные кортежи появились еще в C# 7. Однако переименовывание компонент кортежей все это время делалось вручную. Мы решили положить этому конец и создали специальный рефакторинг.
Появилось новое действие — Navigate to Windows Explorer. Вы найдете его в меню Navigate | Navigate to либо нажав Ctrl+Shift+A и введя название действия. Оно может быть полезно, если вы работаете непосредственно с файлом (например, копируете путь внутри репозитория или сам файл) либо если вы предпочитаете просматривать VCS-историю файла при помощи расширений Git для Windows Explorer.
Мы по-прежнему работаем над перемещением части сервисов ReSharper в отдельный процесс и поддержкой режима «out of process», но при этом продолжаем улучшать производительность там, где это возможно. Вот что ждет вас в этом обновлении.
Мы добавили несколько новых настроек:
new()
и внутри них. Что касается пользовательских правил именования, мы изменили порядок, в котором они применяются: сначала учитываются более узкие правила.
И наконец, мы добавили новое действие для форматирования выделенного кода. Теперь вы можете указать, чтобы для выбранного кода ReSharper не выполнял процесс переформатирования полностью, а лишь регулировал отступы.
Также мы исправили множество ошибок — полный список исправлений можно посмотреть в нашем баг-трекере.
EditorConfig становится популярным инструментом среди .NET-разработчиков, и мы продолжаем улучшать его интеграцию с ReSharper. Вот что мы изменили в этот раз:
csharp_indent_case_contents_when_block
. [InlineAutoData]
лишних аргументов. Также IDE сообщит вам, если для тестового класса или метода отсутствует атрибут [TestFixture]
или [Test]
. В ReSharper C++ 2021.1 мы поддержали несколько новых языковых возможностей C++20 и C++17: классы в параметрах non-type в шаблонах, правила выведения аргументов шаблонов классов и noexcept
в составе типа функции. Также мы пополнили шаблоны базового и постфиксного автодополнения новыми элементами для корутин: co_await
, co_yield
и co_return
.
Благодаря новому набору настроек стиля, вы можете автоматически применять выбранный стиль синтаксических конструкций в своем проекте. При помощи соответствующих инспекций, быстрых исправлений и контекстных действий Apply Syntax Style и Cleanup selection вы сможете легко обновить кодовую базу и соблюдать единый стиль кода.
Доступна бесплатная пробная версия на 30 дней