.NET Tools Releases

ReSharper 2021.2: обновленный анализ кода на C#, новые возможности для ссылочных типов, допускающих значение null, и генераторов кода, а также поддержка URI HttpClient

Read this post in other languages:
English

У нас отличные новости — мы выпустили ReSharper 2021.2!

Внимание! Начиная с релиза 2021.2 инструменты для .NET, включая ReSharper, требуют обязательной установки .NET Framework версии 4.7.2 или выше. Подробности здесь.

А теперь давайте посмотрим, что внутри. 

Анализ кода

  • Поменять местами значения переменных теперь можно при помощи нового быстрого исправления Swap via deconstruction.

  • Мы добавили новые инспекции и соответствующие быстрые исправления: Replace empty array creation with Array.Empty<T>, Replace new EventArgs() with EventArgs.Empty и Replace Type[0] with Type.EmptyTypes.
  • ReSharper учитывает свойство generated_code из файла .editorconfig, позволяя вам указывать, какие файлы исключить из анализа кода.
  • Улучшилась производительность действия Find similar issues и анализа кода для больших и сложных операторов и выражений switch.

Ссылочные типы, допускающие значение null (NRT)

  • Если вы скрыли предупреждение (!) для фрагмента кода, но со временем необходимость в этом исчезла, ReSharper уведомит вас.

  • Мы добавили контекстное действие, позволяющее найти все скрытые предупреждения, связанные с допустимостью null, в выбранной области видимости.
  • Появился рефакторинг, обновляющий аннотации допустимости null и предлагающий применить изменения ко всей кодовой базе.
  • Доступно несколько новых инспекций и соответствующих быстрых исправлений для работы с атрибутами JetBrains Annotations в случае, если вы разрешили использование NRT. Обновите атрибуты JetBrains.Annotations, применив синтаксис NRT и атрибуты, поддерживаемые компилятором.
  • Мы добавили в ReSharper новые инспекции и быстрые исправления для работы с аннотациями, которые поддерживаются компилятором ([DisallowNull], [AllowNull], [MaybeNull], [NotNull] и др.).

Поддержка генерации кода

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

  • Ошибки и предупреждения, найденные в сгенерированном коде, отобразятся в редакторе и на панели маркеров.
  • Отслеживание ошибок в решении (Solution Wide Error Analysis или SWEA) теперь можно выполнять и для сгенерированных файлов. Если в таком файле обнаружится ошибка, вы сразу увидите ее и сможете перейти к соответствующему коду.
  • Теперь вы можете запускать рефакторинги, такие как Rename или Change Signature, из сгенерированных файлов.

  • Вы можете пользоваться Find Usages, искать наследников и переходить от сгенерированного кода к коду, написанному вручную (Ctrl+Click и Navigate To).
  • Для членов классов, таких как события, поля и свойства, теперь работает семантическая подсветка. 
  • При необходимости будут показаны встроенные подсказки.
  • ReSharper показывает собственные подсказки DataTips во время отладки.

Поддержка URI HttpClient

  • При использовании HttpClient автодополнение предложит вам все URI, которые соответствуют действиям в контроллерах, аннотированных атрибутом [Route], [Http{Method}] или [AcceptVerbs].

  • Вы можете с легкостью выполнять навигацию между этими URI и атрибутами маршрута в контроллерах, пользуясь действиями Go to Declaration и Find Usages
  • Если вы переименуете атрибут маршрута в контроллере, изменения также применятся к упоминаниям этого атрибута в URI. Вы можете переименовать маршрут прямо в строке URI.

Подробнее обо всех новых возможностях и улучшениях релиза в 2021.2 читайте на нашем сайте.

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

Навигация 

  • Если вы, делая отладку, выполните Go To Declaration (Ctrl+Click) для интерфейсной ссылки, то перейдете напрямую к реализациям.
  • Список Go To Base/Inheritors теперь включает скрытые переопределения.

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

  • Мы изменили настройки форматирования, выставляемые по умолчанию, — теперь они соответствуют стандартным настройкам Visual Studio.
  • Мы поддержали стиль отступов Pico.
  • Теперь вы можете указывать продвинутые правила именования для объектов record, методов расширения и переменных catch.

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

  • Теперь инструмент динамического анализа программы (DPA) хранит по два значения для каждой найденной проблемы — исторический максимум и значение, полученное при последнем запуске.
  • В окне DPA теперь можно адресовать сразу несколько проблем.
  • Теперь вы можете игнорировать предупреждения в асинхронных методах при помощи атрибута SuppressMessage.

Менеджер сборок

  • При помощи встроенного декомпилятора теперь можно декомпилировать однофайловые приложения. Поддерживаются форматы однофайловых приложений, используемых в SDK .NET Core 3.1, .NET 5 и будущем .NET 6. 
  • Сборки, идущие в комплекте с этими приложениями, теперь можно просматривать точно так же, как вы просматриваете сборки обычных приложений.

Razor

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

ReSharper C++

  • Новый рефакторинг Inline Function позволяет быстро заменить вызов функции телом этой функции.

  • В ReSharper C++ появились новые инспекции для переменных constexpr и параметров функций, представляющих собой ссылку или указатель, — они помогут вам следовать правилам раздела «Constants and immutability» в «C++ Core Guidelines».
  • Новый вид встроенных подсказок указывает на скрытые преобразования типов прямо в редакторе.
  • Мы поддержали Unreal Engine 5.
  • Появились новые инспекции для модернизации кода.
  • При быстром просмотре документации класса или функции стандартной библиотеки теперь также приводится ссылка на cppreference.com.

Подробнее о новых возможностях и улучшениях в ReSharper C++ читайте в этом блог-посте.

ReSharper Command Line Tools

Мы внесли критическое изменение в инструмент InspectCode. Начиная с версии 2021.2 InspectCode автоматически восстанавливает пакеты NuGet и собирает решение перед тем, как приступить к анализу. Если такое поведение, напротив, нежелательно, используйте ключ --no-build, чтобы выключить восстановление NuGet и сборку решения.


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

Подробнее об инструментах для .NET (dotCover, dotTrace, dotMemory и dotPeek) мы рассказываем этом блог-посте.

Ваша команда .NET Tools
The Drive to Develop

Автор оригинальной статьи:

Oksana Mandryka

Alexander Kurakin

Discover more