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

ReSharper Ultimate 2019.3 представляет новый способ управления локализацией, подсказки типов и улучшенную поддержку C# 8, C++20 и Unreal Engine. Мы усовершенствовали действия навигации, расширили возможности форматирования кода и юнит-тестирования, а инструменты командной строки ReSharper и dotTrace теперь работают на Linux и macOS.

Скачать

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

Управление локализацией

Управление локализацией

Новый инструмент Localization Manager поможет эффективно работать с большим количеством resx-файлов в решении. Он отображает все содержимое resx-файлов в единой таблице — вы можете наблюдать за текущим состоянием локализации сайта или приложения и быстро находить ресурсы, для которых отсутствуют локализованные значения в любой культуре.

Вы можете:

  • Добавлять, редактировать, переименовывать, искать, встраивать, перемещать и безопасно удалять любые локализованные ресурсы.
  • Находить все ресурсы, для которых отсутствуют локализованные значения.
  • Скрыть любые локали, которые в данный момент вам не нужны.
  • Создать недостающие файлы .resx.
  • Воспользоваться подсказкой, которая подробно описывает проблему в ячейке.

Вы найдете Localization Manager в меню ReSharper | Windows или в контекстном меню Solution Explorer.

Подробнее об управлении локализацией читайте в нашем блоге.

Улучшенная поддержка C# 8

Улучшенная поддержка C# 8

В этой версии ReSharper мы улучшили поддержку C# 8:

  • ReSharper лучше понимает ссылочные типы, допускающие значение null, и поддерживает ограничения notnull.
  • Поддержаны target-typed switch-выражения.
  • Появилась поддержка методов интерфейса по умолчанию.
  • Новая инспекция с быстрым исправлением подскажет, когда локальную функцию можно объявить статической.
  • Теперь можно включить аннотации допустимости значения null и соответствующие предупреждения в файле, проекте или по всему решению.
  • Новое быстрое исправление поможет добавить атрибут EnumeratorCancellation в параметры CancellationToken асинхронных итераторов.

Кроме того, мы разбили инспекцию Type or type member is never used на две: для поиска неиспользуемых типов (Type is never used) и членов типа (Type member is never used).

Генерация кода

Генерация кода

Действие Generate лучше понимает C# 8:

  • Быстрое исправление Add missing arms проверяет все значения перечислений.
  • Добавлено быстрое исправление и контекстное действие для генерации образцов типов в switch-выражениях.
  • Допустимость значения null учитывается при генерации операторов равенства/сравнения.

Кроме того, теперь можно использовать System.HashCode для реализации GetHashCode при генерации операторов равенства и сравнения на равенство на C# и VB.NET — это поможет сделать ваш код чище.

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

Стиль кода

В этой версии появилась еще одна долгожданная возможность. Настройки именования C# теперь поддерживают файлы EditorConfig.

Помимо этого, есть еще несколько небольших изменений, которые помогут вам управлять форматированием кода:

  • Для тех, кто предпочитает использовать ключевое слово var вместо явного объявления типа, только если тип выражения инициализатора очевиден, ReSharper поможет обнаружить более очевидные случаи. Есть также режим «совместимости», соответствующий поведению Roslyn.
  • Новая опция, совместимая с StyleCop и Roslyn, добавляет круглые скобки, чтобы уточнить приоритет для отдельной группы операторов, вложенных в другие из этой же группы. Например, если вы не помните, что должно выполняться раньше, && или ||, ReSharper поможет разобраться, добавив круглые скобки.
  • Comment Code теперь по умолчанию добавляет отступ к комментарию. Чтобы отключить это поведение, используйте опцию Place comments at first column when commenting out code.
  • На страницах настройки отступов теперь показывается уведомление о том, что включена опция Autodetect indent size and value.
  • На страницах параметров форматирования C# новая подсказка объяснит, как работают действия Configure formatting и Autodetect formatting.
ReSharper Command Line Tools для Linux и macOS

ReSharper Command Line Tools для Linux и macOS

Нас часто спрашивали, можно ли запускать ReSharper Command Line Tools на CI-сервере, работающем на Linux. Долгое время ответ был «нет». Но мы провели большую работу и удалили все специфичные для Windows компоненты, чтобы можно было все перенести в среду выполнения Mono для Linux и macOS. Не волнуйтесь, на Windows по-прежнему используется .NET Framework.

И вот ReSharper Command Line Tools наконец добрались до Linux и macOS. Теперь ничто не помешает вам использовать мощный анализ кода ReSharper в этих операционных системах.

Подсказки имен типов

Подсказки имен типов

Надеемся, вам нравятся подсказки имен параметров и аннотации кода, которые мы реализовали в ReSharper 2019.1. В этой версии мы пошли дальше и добавили подсказки типов. Они доступны для:

  • Параметров лямбд.
  • Всех вхождений var, включая сопоставление с образцом и деконструкцию кортежей.
  • Переменных диапазона в операторах LINQ.
  • В конце строки в цепочке вызовов методов.
Навигация и поиск использований

Навигация и поиск использований

Большинство разработчиков сталкиваются с необходимостью узнать, где в коде используются типы или члены типа, относящиеся к определенному модулю. Для этого в ReSharper уже давно есть действие Find dependent code. Однако у него всегда были ограничения.

В версии 2019.3 мы устранили некоторые из них:

  • Действие Find dependent code теперь работает для ссылок на пакеты NuGet и может искать не только в проекте, но и по всему решению.
  • В меню Navigate to добавлена опция Consuming APIs. Она перечисляет все методы, которые принимают объекты определенного типа в своих параметрах.
  • В окне Find results действия Find dependent code появились новые фильтры.
  • Теперь можно перейти к внешним источникам пакетов NuGet, которые содержат пакет исходных символов.
Обновление поддержки юнит-тестирования

Обновление поддержки юнит-тестирования

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

  • Расширенная опция Group by в окнах Unit Test Explorer и Unit Test Session поможет сгруппировать тесты, как вам хочется. Новый элемент Duration позволяет группировать тесты по их продолжительности.
  • В окне Unit Test Session можно отфильтровать тесты по целевому фреймворку, если у вас их больше одного (что бывает довольно часто) и вы не хотите видеть некоторые из них.
Обновленная подсветка идентификаторов

Обновленная подсветка идентификаторов

Мы полностью переработали механизм подсветки идентификаторов. В меню Tools | Options | Fonts and Colors появилось больше настроек, чтобы подсветка была максимально точной. Среди них:

  • Выбор цветов сущностей для всех языков.
  • Специальные настройки цветов для C#.
  • Новые настройки цветов конструкций для разных языков.
Другие возможности

Другие возможности

  • Новые инспекции для NUnit охватывают комбинаторные юнит-тесты и отдельные параметры параметризованных юнит-тестов.
  • Подсказка Parameter Info доступна для кортежей.
  • Для Xamarin теперь поддерживаются атрибуты x:DataType и Class.
  • При удалении новых строк и при удалении символов перед новой строкой, сохраняется пробел, если нужно разделить лексемы или если того требуют правила форматирования.
Поддержка стандарта C++20

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

Стандарт C++20 полностью готов и будет официально подписан в следующем году — разработчиков ждет большой набор полезных возможностей. Многие из них уже поддержаны в ReSharper C++ 2019.3.

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

В ReSharper C++ появилась поддержка концептов, включая обновленный с учетом этой языковой возможности рефакторинг Rename и действие Find usages. Более того, анализатор кода покажет подробную информацию об ошибках в использовании концептов. Например, если разрешение перегрузки невозможно, из-за того что не выполнено требование концепта, вы узнаете все подробности об ошибке из всплывающей подсказки. Кстати, для удобства чтения мы добавили цвета в подсказки, которые сообщают об ошибках разрешения перегрузки.

Мы подробно рассказываем о нововведениях C++20 и их поддержке в ReSharper C++ в серии статей в нашем блоге.

Поддержка Unreal Engine 4

Поддержка Unreal Engine 4

ReSharper C++ понимает, что вы работаете над проектом Unreal Engine и корректирует свое поведение в соответствии с особенностями UE4.

Постфиксный шаблон new учитывает специфику создания объектов в UE4. Кроме того, появились шаблоны для генерации USTRUCT/UCLASS/UENUM/UENUMCLASS.

Подобно указателям std::shared_ptr/std::unique_ptr, ReSharper C++ теперь обрабатывает и умные указатели Unreal Engine (TSharedPtr, TSharedRef, TWeakPtr, TUniquePtr). Это означает, что для умных указателей теперь поддерживаются такие возможности редактора, как Parameter Info, анализ кода и постфиксное автодополнение кода.

И наконец, мы улучшили производительность при работе над проектами UE4. Например, устранили зависание после действия Refresh Visual Studio Project в редакторе UE4.

Узнать, что нового в ReSharper C++.

Консольный профилировщик для Linux и macOS

Консольный профилировщик для Linux и macOS dotUltimate

Консольный профилировщик наконец работает на Linux и macOS. dotTrace.sh обладает тем же набором функций, что и его аналог для Windows, и доступен в виде архива .tar.gz и пакета NuGet.

Узнайте, что нового в dotTrace 2019.3.

Улучшения dotCover dotUltimate

Основные улучшения в dotCover 2019.3:

  • Поддержка Unity 2018.3 и более поздних версий во всех операционных системах. Чтобы выполнить анализ покрытия кода тестами Unity, используйте JetBrains Rider.
  • Поддержка Microsoft Fakes.
  • Возможность группировать результаты анализа по вложенным пространствам имен в Rider, Visual Studio и в отчетах, генерируемых консольным инструментом dotCover.

Узнайте, что нового в dotCover 2019.3.

Скачать

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