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). С помощью этого атрибута вы можете указать вызывающей функции, чтобы она использовала возвращаемое значение.![Управление [[nodiscard]] при помощи рефакторинга Change Signature](https://blog.jetbrains.com/wp-content/uploads/2021/12/change_signature_nodiscard.png)
Анализ кода
Мы продолжаем добавлять в 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
Автор оригинальной статьи:
