Что нового в ReSharper Ultimate 2020.1

ReSharper Ultimate 2020.1 анализирует использования целочисленных значений в C# и включает в себя улучшенную поддержку ссылочных типов, допускающих значение null, а также новых функций C++20. Вас ждет расширенная поддержка XAML и Unreal Engine, новые возможности навигации и комментарии в Localization Manager. Декомпилятор поддерживает больше возможностей C# 7.x и 8.0.

Скачать

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

Анализ использования целочисленных значений в C#

Анализ использования целочисленных значений в C#

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

  • Операторы сравнения/равенства, которые всегда выдают одинаковое значение, true либо false.
  • Недостижимые условия switch, проверяющие целочисленные значения.
  • Бессмысленные арифметические операции, такие как умножение на 1, прибавление 0 и т.п.
  • Возможные переполнения int.
  • Потенциальное деление на 0.

Чтобы повысить точность анализа, мы добавили два новых атрибута JetBrains.Annotations для использования с членами типа и параметрами типа int: [NonNegativeValue] и [ValueRange(from, to)]. Эти атрибуты определяют, как значения отдельных членов int могут меняться во время выполнения.

Поддержка C#

Поддержка C#

Мы продолжаем расширять поддержку C#8 Мы многое поменяли в архитектуре ReSharper, чтобы анализ кода, рефакторинги, ReSharper Build и другие функции поддерживали ссылочные типы, допускающие значение null. ReSharper 2020.1 показывает предупреждения компилятора, связанные с такими типами, и предлагает быстрые исправления для большинства из них.

Кроме того, мы добавили несколько новых инспекций и быстрых исправлений, чтобы:

  • Находить избыточные ограничения параметров типов с учетом ссылочных типов, допускающих значение null.
  • Находить и использовать асинхронные перегрузки методов, когда они доступны, вместо синхронных перегрузок.
  • Использовать выражение nameof вместо конструкции typeof(SomeType).Name для получения имени текущего типа.

Улучшения производительности

В новой версии много архитектурных изменений, которые приближают нас к тому, чтобы вынести основную функциональность ReSharper в отдельный процесс из процесса Visual Studio. Все эти преобразования коснулись внутренней структуры ReSharper — вы не заметите никаких изменений в UI/UX.

Если вам интересно, как мы выносим ReSharper в отдельный процесс и где мы сейчас находимся, читайте об этом в нашем блоге (на английском).

Обновления в навигации

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

  • Для перехода к объявлению, нажмите на колесо мыши.
  • Если нажать Ctrl+Enter в списке результатов Go to File, ReSharper подсветит файл в окне Solution Explorer.
  • Можно использовать полный путь к файлу в окне Go To File / Go To Everything.
Улучшенная поддержка XAML

Улучшенная поддержка XAML

Мы внесли много улучшений и исправлений в поддержку XAML, которая теперь охватывает файлы WPF, Xamarin.Forms, UWP и Avalonia

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

  • При использовании d:BindingContext
  • В Picker.ItemDisplay в Xamarin.Forms
  • Привязка RelativeSource в Xamarin.Forms
  • Шаблоны привязок для элемента управления ScrollViewer
  • Когда ItemsSource используется во вложенном элементе
  • В TreeView.ItemContainerStyle

Для проектов UWP мы добавили поддержку: 

  • Условного кода XAML
  • Привязки CustomResource 

Также появилась поддержка:

  • Использования единообразного имени ресурса (URN) в определении пользовательской схемы пространств имен XML
  • Косой черты в именах ресурсов
  • Директив x:Static для Avalonia
Обновления в юнит-тестировании

Обновления в юнит-тестировании

ReSharper 2020.1 позволяет импортировать и экспортировать сеансы юнит-тестирования. Вы можете делиться сеансами с коллегами и использовать один и тот же набор тестов на разных компьютерах или в разных ветках.

Кроме того, существующие сеансы юнит-тестирования теперь сохранятся при обновлении до основной версии ReSharper, что удобно, если вы не хотите терять открытые и заблокированные сеансы.

Комментарии в Localization Manager

Комментарии в Localization Manager

Вы просили — мы сделали: в рабочей таблице теперь предусмотрены строки для комментариев. Вы можете оставить комментарий (или отредактировать существующий) для любого значения, полученного из файлов ресурсов, прямо в таблице. Комментарии можно экспортировать и импортировать. Если же комментарии вам не нужны, можете их скрыть, нажав на значок Show/Hide comments.

Кроме того, мы исправили несколько проблем производительности. Это позволило ускорить загрузку и фильтрацию таблицы, устранить некоторые зависания интерфейса и сделать прокрутку более плавной. 

В управлении локализацией есть и другие улучшения: 

  • Улучшена поддержка языков с направлением письма справа налево.
  • Навигация к определенной строке из текстового редактора и диалогов рефакторинга стала более точной.
  • Улучшено автодополнение и валидация в диалогах.
Форматирование кода

Форматирование кода

Мы добавили новую настройку форматирования C#-кода, касающуюся использования завершающей запятой. Вы найдете ее в меню 0>ReSharper | Options | Code Editing | C# | Code Style | Trailing comma. Она совместима с инспекцией StyleCop SA1413 (за исключением очень редких нетривиальных случаев).

Поддержка стандарта C++20

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

Стандарт C++20 вот-вот подпишут, и ReSharper C++ поддерживает еще несколько новых языковых возможностей, включая заполнители типов с ограничениями, сокращенные шаблоны функций и объявления using enum. Кроме того, ReSharper C++ предлагает быстрое исправление, чтобы использовать синтаксис C++20 для лямбд, и рефакторинг, чтобы легко добавить using enum.

Разработка игр

Новые возможности для разработчиков игр

В ReSharper C++ много изменений в поддержке Unreal Engine: улучшен рефакторинг Rename и поддерживаются файлы SpatialOS GDK и USF с виртуальными путями к файлам. Новая версия лучше согласуется с рекомендациями Unreal Engine: отключена инспекция Use auto и соблюдаются правила именования консольных переменных и категорий журналов.

Кроме того, в ReSharper C++ 2020.1 появилась начальная поддержка HLSL. Даже на раннем этапе она уже включает в себя множество функций: от базовой подсветки кода до умного автодополнения и быстрой навигации.

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

Действие Next Important Call

Навигация по важным вызовам в dotTrace dotUltimate

Теперь можно перемещаться по дереву вызовов с помощью действия Next Important Call. Нажмите Ctrl+Shift+Right, и dotTrace переместит вас к узлу, анализ которого в наибольшем приоритете (например, узел, выполнение которого занимает много времени).

Эта функция доступна в Visual Studio, JetBrains Rider и при автономном использовании dotTrace (в Performance Viewer и Timeline Viewer).

Что нового в dotTrace 2020.1

Поддержка ссылочных типов, допускающих значение null

Поддержка ссылочных типов, допускающих значение null, в dotPeek

В этой версии улучшена поддержка возможностей C#:

  • Декомпилятор теперь поддерживает ссылочные типы, допускающие значение null. Обратите внимание: сейчас это работает только в объявлениях и не работает в телах методов.
  • Поддержана декомпиляция членов интерфейса по умолчанию и атрибутов, предназначенных для полей автоматически реализуемых свойств
  • Улучшена поддержка декомпиляции имен компонентов кортежа.

Что нового в dotPeek 2020.1

Скачать

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