ReSharper C++
The Visual Studio Extension for C++ Development
Публикации и ответы на комментарии в блогах JetBrains не выходят на русском языке с 2022 года.
Приносим извинения за неудобства.
ReSharper C++ 2021.3: поддержка Visual Studio 2022, шаблоны файлов Unreal Engine, новые возможности C++20 и C
Вышел ReSharper C++ 2021.3!
Чтобы обновиться до последней версии или бесплатно попробовать наши инструменты в течение 30 дней, перейдите на наш сайт или воспользуйтесь приложением Toolbox App.
Подробнее обо всех обновлениях читайте на нашем сайте. Вот некоторые из них:
- поддержка Visual Studio 2022;
- новые возможности C++20 — автодополнение назначенных инициализаторов для агрегатной инициализации, а также инспекции, которые помогут вам освоить новые библиотечные функции;
- шаблоны классов Unreal Engine;
- улучшенная поддержка C — выражения
_Generic
(из C11) и расширение GNUtypeof
; - навигация к операторам
goto
и неактивному коду; - вычисленные значения константных выражений в окне Quick Info;
- управление атрибутом
[[nodiscard]]
(из C++17) при помощи рефакторинга Change Signature; - новые инспекции и быстрые исправления, а также обновленный Clang-Tidy с проверками Clang 13.
Visual Studio 2022
ReSharper С++ 2021.3 поддерживает Visual Studio 2022! Это значит, что вы сможете пользоваться привычным набором функций Visual Studio. А поскольку Visual Studio 2022 представляет собой 64-разрядное приложение, ReSharper больше не ограничен 3 ГБ оперативной памяти. Разница особенно заметна при работе с объемными решениями: вы больше не столкнетесь с проблемами производительности, возникающими из-за ограничения для 32-разрядного процесса Visual Studio. Попробуйте ReSharper C++ 2021.3 в Visual Studio 2022 и расскажите нам о своих впечатлениях!
C++20
В ReSharper C++ 2021.3 вы можете легко генерировать шаблонный код для агрегатной инициализации, используя назначенные инициализаторы C++20.
Также мы добавили инспекции, которые помогут вам освоить новые функции стандартной библиотеки:
std::erase
иstd::erase_if
, стирающие элементы из любого стандартного контейнера;std::contains
, проверяющая, существует ли элемент в ассоциативном контейнере;std::make_shared_for_overwrite
иstd::make_unique_for_overwrite
, создающие умные указатели с инициализацией по умолчанию.
Unreal Engine
Мы добавили шаблоны файлов Unreal Engine, а значит, теперь вы можете создавать классы Unreal Engine, не переключаясь в Unreal Editor. Для этого зайдите в Solution Explorer, нажмите правой кнопкой мыши на нужную папку (или используйте Ctrl+Alt+Insert
) — откроется меню Add, в котором вы сможете выбрать любой шаблон Unreal Engine. Укажите название нового класса, и ReSharper C++ сам создаст все заголовочные и исходные файлы с кодом по шаблону, распределив их по нужным папкам.
Поддержка C
Мы дополнили возможности кроссплатформенной разработки на C. Теперь вы можете пользоваться выражениями _Generic
(из C11), указывая с помощью них условия компилятору. Также мы поддержали расширение GNU C typeof
для указания типа выражения.
Навигация
Мы улучшили действие Go to Declaration. Теперь вы можете переходить от выражения goto
к соответствующей метке и искать объявления в неактивных блоках препроцессора.
Также мы обновили окно File Structure — теперь оно группирует символы с одинаковым квалификатором в квалифицированном имени.
Помощь в написании кода
Подсказка Quick Info теперь также показывает значения константных выражений. Вы можете посмотреть, как вычисляются значения операторов sizeof
и alignof
, выражений static_assert
и др.
Генерировать комментарии Doxygen стало проще. Также теперь вы можете создать документирующий комментарий, поставив ///
перед сущностью, которую хотите задокументировать. А чтобы добавить дополнительную строку к однострочному комментарию, просто нажмите Enter
, поставив курсор на комментарий.
Change Signature
Рефакторинг Change Signature позволяет легко управлять атрибутом [[nodiscard]]
(C++17). С помощью этого атрибута вы можете указать вызывающей функции, чтобы она использовала возвращаемое значение.
Анализ кода
Мы продолжаем добавлять в ReSharper C++ инспекции и быстрые исправления для улучшения качества кода. Вот некоторые из них:
- Redundant parameter list in lambda declarator
- Redundant elaborated type specifier
- For-loop can be replaced with while-loop
- Namespace definition containing single class specialization
- May be missing keyword “throw”
- [[nodiscard]] cannot be applied to functions without a return value
- Abstract final class is marked ‘final’ or ‘sealed’
- Non-overriding virtual function is marked ‘final’ or ‘sealed’
Также мы обновили встроенный Clang-Tidy до версии Clang 13 — теперь он включает проверки из свежей версии LLVM.
Мы стараемся следить за качеством продукта в целом. Это было одним из наших главных приоритетов при работе над ReSharper C ++ 2021.3. В течение этого релизного цикла мы закрыли более 270 тикетов, связанных с добавлением новых функций, устранением дефектов и проблем с производительностью Вот некоторые из них:
- Мы устранили проблемы интеграции ReSharper C++ с системой Unreal Engine Sparse Class Data.
- Раньше при загрузке решения ReSharper мог заново запустить индексирование для проектов Unreal Engine. В новой версии мы исправили эту проблему.
- Рефакторинг Rename теперь применим к аргументам макроса, которые используются по несколько раз при раскрытии макроса.
Подробнее обо всех возможностях, вошедших в новую версию ReSharper C++, можно прочитать здесь. А здесь мы рассказываем об изменениях платформы ReSharper. Например, дополнительные опции для проектов с GitHub во всплывающем окне Copy Code Reference позволяют легко делиться ссылками с коллегами, а для других репозиториев можно добавить собственный шаблон URI.
Расскажите, что в этом релизе ReSharper C++ порадовало вас больше всего. Пробуйте ReSharper C++ 2021.3 и делитесь впечатлениями!
Ваша команда ReSharper C++
The Drive to Develop
Автор оригинальной статьи: