ReSharper 2023.2 предлагает улучшенную поддержку для C#, которая включает в себя новые инспекции для работы с локальными функциями и необработанными строками, а также для устранения распространенных ошибок Entity Framework. Кроме того, в этой версии добавлена поддержка рефакторинга C++ и дополнительных возможностей C++20 и C++23. В числе других новых функций — возможность создания юнит-тестов и навигации по ним, предиктивный режим отладчика и помощник на основе искусственного интеллекта AI Assistant.
Доступна бесплатная пробная версия на 30 дней
В ReSharper 2023.2 добавлены новые инспекции кода и быстрые исправления для работы с необработанными строковыми литералами и локальными функциями, а также для обработки распространенных ошибок Entity Framework и лишних директив nullable. Появилась поддержка C# 12, включая первичные конструкторы и лямбда-выражения с необязательными параметрами. Кроме того, мы улучшили поддержку сброса переменных и одноразовых ресурсов, а также добавили в ReSharper новые встроенные и межстрочные подсказки.
Юнит-тестирование в ReSharper было существенно обновлено: добавлена возможность удобного создания тестов для производственного кода и навигации по ним.
Чтобы создать тест, просто вызовите действие Generate Code и выберите Unit Test или нажмите Ctrl+U,C. ReSharper предложит выбрать имя класса теста и даже создаст новый проект с использованием предпочтительного фреймворка тестирования, если такого проекта еще нет. После создания теста можно перейти от его реализации к тестовому коду с помощью действия Navigate To или нажав Ctrl+U,F.
Версия 2023.2 наших IDE на базе IntelliJ и .NET-инструментов включают важную новую функцию AI Assistant — помощник на основе искусственного интеллекта. Текущий набор функций AI Assistant, включающий чат-бота, органично вписывается в ключевые процессы работы: используйте контекстные действия, чтобы AI Assistant пояснил выбранные фрагменты кода, помог устранить потенциальные проблемы и сгенерировал XML-документацию.
Мы добавили новые инспекции и контекстные действия для работы с необработанными строками, а также улучшили поддержку редактирования и ввели новые возможности форматирования. Среди них:
Мы добавили несколько новых инспекций, быстрых исправлений и возможностей контекстной навигации для распространенных проблем, которые возникают при работе с базами данных, использующими фреймворки объектно-реляционного отображения (ORM), в частности Entity Framework.
Подробнее о новых инспекциях для Entity Framework читайте в нашем блоге.
В ReSharper 2023.2 добавлены две новые инспекции с быстрыми исправлениями для улучшения читаемости кода с использованием локальных функций:
return
или continue
перед локальными функциями в конце метода. return
, continue
или другим оператором передачи управления. В тех случаях, когда вы не хотите или не можете менять код, ReSharper 2023.2 покажет межстрочную подсказку с операторами return;
или continue;
перед локальными функциями, чтобы помочь прочитать код, не меняя его.
Подробнее о новых инспекциях — в нашем блоге.
#nullable
и NRT-аннотаций В новой версии появились несколько новых инспекция для директив #nullable
и NRT-аннотаций:
JetBrains.Annotations
базового члена. Подробнее об этих инспекциях читайте в нашем блоге.
var
Теперь в случае распространенных оберточных типов все навигационные действия (Go to…, Find Usages и т. д.) предлагают базовые типы при переходе от var
. Например, при вызове действия Go to declaration на ключевом слове var
переменной с типом ImmutableArray<Person>?
ReSharper предложит перейти к Person
.
Подробнее об этом читайте в нашем блоге.
В версии 2023.2 мы добавили поддержку первичных конструкторов для классов non-record и типов non-record struct, появившихся в предварительной версии C# 12. Несколько инспекций выявляют эти типы там, где инициализацию можно выразить с помощью нового первичного конструктора, и предлагают применить быстрое исправление, чтобы заметно сократить объем повторяющегося кода.
Иногда инициализация типа должна быть менее тривиальной, и ее уже нельзя выразить с помощью первичного конструктора. Для таких случаев мы предусмотрели несколько контекстных действий, позволяющих отменить подстановку параметров первичного конструктора в конструкторы и обычные поля.
Об этих и многих других функциях для работы с первичными конструкторами читайте в нашем блоге.
В рамках работы над поддержкой нововведений C# 12 мы добавили поддержку значений параметров по умолчанию в лямбда-выражениях. Помимо стандартного набора предупреждений, касающихся распознавания этого синтаксиса, мы также переработали инспекцию The parameter has the same default value, чтобы она учитывала значения параметров по умолчанию в лямбдах. Подробнее
В ReSharper 2023.2 добавлены две новые инспекции, чтобы было проще управлять освобождением объектов:
Кроме того, мы улучшили функцию Generate dispose pattern, обеспечив поддержку интерфейса IAsyncDisposable
и возможность генерации асинхронного метода для освобождения ресурсов.
Подробнее об этих изменениях можно прочитать здесь.
Мы добавили новые возможности анализа кода для поддержки сброса переменных C#:
_
name is typically reserved for local parameters without usages касается переменных и параметров с именем _
, которые на самом деле используются. Они выглядят так, будто их значение сброшено, но в действительности все наоборот. Когда значение передается аргументу кортежа или возвращаемому типу, C# позволяет опустить имена компонентов. Однако в отсутствие имен сложнее понять смысл каждого компонента — приходится смотреть его целевой тип. Например, многие разработчики вынуждены проверять, куда назначен кортеж (null
, false
), чтобы понять, что означают его компоненты.
Здесь на помощь приходят встроенные подсказки. ReSharper 2023.2 выводит на экран подсказки с именами компонентов кортежа, если эти имена не указаны явно. В результате код становится проще читать и понимать.
Для стандартных и null-компонентов в ReSharper 2023.2 отображаются подсказки с целевыми типами, даже если у целевого компонента нет явного имени. Исключение составляют типы строк и объектов, потому что они обычно малоинформативны.
Еще одна распространенная ситуация, в которой имена могут улучшить читаемость — паттерны деконструкции. В этом случае явное имя известно либо из метода Deconstruct
, либо из компонентов исходного кортежа. Задача этих подсказок — дать вам дополнительный контекст, если в самом паттерне недостаточно данных, чтобы понять, что к чему относится, например value is ({ }, true, null)
.
#pragma warning
Директивы Pragma позволяют легко отключать и восстанавливать предупреждения компилятора по их идентификаторам. Однако, несмотря на то, что такие идентификаторы являются отличным способом взаимодействия с компилятором, в них может быть сложно разобраться человеку. Без специальных знаний невозможно понять, к чему относится идентификатор CS0168
или CS0618
, и что требует внимания.
Запросы LINQ часто бывают сложными и включают в себя несколько трансформаций и проекций. В результате отладка таких запросов занимает много времени, особенно при работе с большими наборами данных. Чтобы вам было проще анализировать результаты на каждом этапе выполнения запроса, новая версия ReSharper в ходе отладки показывает промежуточные результаты в виде встроенных подсказок.
Графические элементы редактора, в которых отображаются промежуточные результаты, помогают быстро найти неожиданные значения или неверные трансформации.
В ReSharper C++ добавлен рефакторинг Safe Delete для безопасного удаления символов из исходного кода. Его можно применять в отношении классов, функций, переменных, перечисляемых типов, пространств имен и даже концептов.
Прежде чем удалять символ, ReSharper C++ находит его использования и показывает превью изменений в исходном коде — так вы можете убедиться, что не будет удалено ничего лишнего. При попытке удаления сложной сущности, такой как класс или пространство имен, ReSharper C++ рекурсивно проверит использование всех ее членов.
В этой версии поддерживаются некоторые новые возможности языка, в том числе if consteval
, модули стандартной библиотеки C++23, атрибут [[no_unique_address]]
и статический operator()/operator[]
.
В ReSharper 2023.2 добавлена пара новых возможностей форматирования кода C#, которые улучшают читаемость цепочек вызовов метода.
Первая опция контролирует наличие разрыва строки перед первым вызовом метода. Вторая предназначена для случаев, когда смешиваются вызов метода и вызов свойства, и определяет, нужен ли разрыв строки после вызова свойства.
AI Assistant не встроен в ReSharper, его нужно устанавливать отдельно. Доступ к AI Assistant временно ограничен, и вы можете оказаться в листе ожидания.
Подробнее об AI Assistant и его установке через Toolbox App или установщик dotUltimate читайте в документации.
По умолчанию AI Assistant в ReSharper знает, какие языки, фреймворки, библиотеки и технологии используются в вашем решении. Благодаря этому он генерирует более точные и конкретные ответы.
При использовании опции Smart chat помощник ссылается на конкретные файлы и символы, получает фрагменты кода или информацию о свежих изменениях в проекте, находит использования тех или иных методов. В результате он предлагает наиболее точные решения.
После установки плагина AI Assistant в ReSharper появятся контекстные действия для использования возможностей искусственного интеллекта. AI Assistant умеет:
В ReSharper теперь есть предиктивный отладчик, который предвидит все возможные состояния, возникающие при выполнении программы, не прибегая к ее реальному выполнению. Он может:
Предиктивный режим предлагает новое понимание выполнения программы. Кроме того, он позволяет экспериментировать с разными значениями и находить ошибки в коде, не перезапуская отладку при каждом изменении.
Чтобы включить предиктивный режим, перейдите в меню ReSharper | Options | Tools | Debugger | Editor Integration | Predictive debugger | Show predicted values (beta).
Сейчас этот режим отладчика находится на стадии бета-тестирования, и нам очень важны ваши отзывы, чтобы мы могли сделать его максимально эффективным. Сообщайте о любых ошибках и делитесь пожеланиями в нашем баг-трекере.
Resharper 2023.2 дает возможность подробно сравнить две сборки. Эта функция особенно удобна при изучении различий между двумя версиями конкретной сборки и поиске уязвимостей, которые могли появиться в более новой версии.
Чтобы выполнить сравнение, нажмите Compare Two Assemblies в окне Assembly Explorer. Сравнивать можно как приложения, состоящие из одного файла, так и файлы .exe
или .dll
.
В ReSharper 2023.2 мы пересмотрели подход к кэшированию данных, которые IDE использует для работы своих систем. Такие изменения, опирающиеся на множество тестов производительности, позволили значительно сократить использование дискового пространства каждым открытым решением. С практической точки зрения это позволяет тратить меньше времени на запись данных на диск и их считывание, а следовательно, сократить время загрузки решений.
Еще одно изменение, позволившее повысить скорость загрузки решения — рефакторинг логики конструирования внутренних компонентов ReSharper. Подробнее
Доступна бесплатная пробная версия на 30 дней