News Releases

ReSharper C++ 2023.3: Updated AI Assistant and Better Support for Cross-Platform Code

Get the most out of your developer experience with the latest ReSharper C++ update!

ReSharper C++ 2023.3 brings a major update to JetBrains AI Assistant; a new built-in grammar and spelling checker; updates for C, C++, and HLSL support; code completion and Find Usages for inactive code inside conditional preprocessor branches; and more. Read on for details about all of this version’s key improvements.

ReSharper C++ 2023.3

Update or start a free 30-day trial today! The brand-new build is available on our website, and all our tools for Visual Studio can be downloaded via the Toolbox App.

DOWNLOAD RESHARPER C++

AI Assistant is out of preview

JetBrains AI Assistant is now generally available with a number of new and improved features to increase your productivity. Our latest set of improvements includes better project awareness for AI actions and a prompt library.

JetBrains AI Assistant

Use AI Assistant in ReSharper C++ as a supplemental feature with a JetBrains AI Service subscription.

Grammar and spelling checking

JetBrains Grazie has become ReSharper’s new built-in grammar and spelling checker. Grazie supports over 20 languages and catches natural language errors within code written in programming languages supported by ReSharper (C#, C++, and VB.NET), in HTML, XML, and XAML markup, and in comments. If you want Grazie to check more natural languages than just English, go to Options | Grammar and Spelling | General in ReSharper and adds the ones you need.
Built-in grammar and spelling checker
Please note that grammar checking is currently not available in doxygen comments.

Updates for cross-platform code

With platform-specific or configuration-specific code, you may often find yourself editing currently inactive code blocks inside conditional preprocessor branches. ReSharper C++ 2023.3 brings two major improvements to make this easier:

  • Code completion in these scenarios now includes symbols from the global scope. Previously, code completion only offered macros in inactive code.Completion in inactive code
  • Find Usages now finds possible usages in inactive code and macro bodies. Previously, if you wanted to find these usages, you had to use Find Usages Advanced and investigate textual occurrences.

We’ve also introduced support for several new clang intrinsics, such as __is_const(), __is_member_pointer(), and others, to make ReSharper C++ work better with cross-platform code.

For cross-platform C and C++ development, you can try an early preview of CLion Nova. It is powered by ReSharper C++ and absolutely free to use at this stage. Simply register and start coding, and don’t forget to send us your feedback!

C and C++ support

ReSharper C++ now correctly handles __has_cpp_attribute from C++20’s feature testing to better support attribute annotations in C++ standard libraries.
__has_cpp_attribute
With support for the __pragma (pack) syntax used inside macro definitions, ReSharper C++ now correctly computes the sizes of packed structures so that you can rely on the results of code analysis.

Among the updates for C, ReSharper C++ brings new and improved support for the following language features:

  • C99’s restrict type qualifier, which can be used in pointer declarations.C99’s restrict type qualifier
  • Type deduction, constexpr, and nullptr from C23.
  • void, specifically when used in the parameter list of a function to indicate that the function doesn’t take any arguments.

HLSL and Unreal Engine

HLSL 2021 introduced C++-like template functions and data types. The latest ReSharper C++ update brings full support for HLSL templates:
HLSL template
This release also introduces support for RayQuery and brings all of the corresponding flags to the code completion list.

Here are some of the key Unreal Engine updates:

  • A new inspection will warn you when a dynamic delegate function is not marked with the UFUNCTION macro.Method is not marked with the UFUNCTION
  • The Generate hash function action now generates code in the Unreal Engine style.
If you’re interested in a standalone cross-platform IDE for Unreal Engine development, consider Rider. The Unreal Engine support in Rider and ReSharper C++ is aligned, and you can expect the same improvements in the Rider 2023.3 update.

Attributes for refining inspections

You can use ReSharper-specific C++ attributes to make ReSharper analyze your solution with greater accuracy and insight. In ReSharper C++ 2023.3, we’ve added [[jetbrains::...]], which joins [[rscpp::...]] as a prefix available for the [[jetbrains::format]], [[jetbrains::guard]], and [[jetbrains::has_side_effects]] attributes.

The new [[jetbrains::pass_by_value]] attribute lets you suppress the Pass value by const reference inspection for function parameters.
[[jetbrains::pass_by_value]]

Learn more about ReSharper-specific attributes in our online documentation.

Code analysis

We’ve upgraded the bundled clang-tidy binary to Clang 17, bringing updates from the latest LLVM release. Moreover, when clang-tidy checks output additional details alongside the warning text, ReSharper C++ now shows the additional notes in tooltips:
Additional notes from clang-tidy

Here is the list of the most notable updates for code analysis in ReSharper C++ 2023.3:

  • Set of inspections for incorrect usages of the export keyword in C++20 modules.Keyword export is redundant
  • Inspection for usages of multicharacter literals.
  • Inspection with a quick-fix to remove redundant conditional operators and simplify ternary conditional expressions.

Coding assistance

The Alt+Insert Generate menu helps you quickly create boilerplate code. In ReSharper C++ 2023.3, we’ve added a new action to the list, allowing you to generate a destructor.

When invoked in a polymorphic class, the action will insert the required virtual and/or override specifiers in accordance with your syntax style settings. You can configure the body style of the generated destructor on the Code Editing | C++ | Code Generation options page.
Generate destructor

Here are a few of the other notable improvements:

  • We’ve added support for #pragma region and #pragma endregion, including inlay hints, the ability to jump between matching directives, and folding and navigation in the File Structure window.
  • Reference inlay hints now have a separate [>>] icon so that you can spot forwarding references at a glance.
  • The new Generate inline definitions action lets you quickly generate bodies for several functions simultaneously.
  • When you invoke the Introduce variable or Introduce field refactorings on a nested expression, ReSharper C++ now lets you choose the target expression explicitly instead of automatically using the outermost one.
  • To improve the code navigation experience, symbols that came from macro substitutions are now hidden from Go to and the File Structure window.

Code formatting

ReSharper C++ 2023.3 introduces several new formatting options:

  • Break line before -> in trailing return types
  • Break line after -> in trailing return types
  • Spaces within empty blocks
  • Allow comments after {

New formatting options

We’ve also upgraded the bundled clang-format binary to Clang 17 and implemented support for the InsertNewlineAtEOF clang-format setting, which can now be used both when importing formatter settings from a .clang-format config and when using clang-format instead of the built-in formatter.

The full list of fixed issues is available in our issue tracker. You can also check out the latest updates in ReSharper to learn about all of the other changes introduced in this release.

Your feedback is highly appreciated and plays a crucial role in improving the product. We encourage you to share your thoughts and suggestions regarding the new features and updates. If you spot a bug, please report it to our issue tracker.

DOWNLOAD RESHARPER C++

Your ReSharper C++ team
JetBrains
The Drive to Develop

image description