ReSharper C++
The Visual Studio Extension for C++ Development
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.
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.
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.
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.
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.
- 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.
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.
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. - Type deduction,
constexpr,
andnullptr
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:
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.
- The Generate hash function action now generates code in the Unreal Engine style.
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.
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:
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. - 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.
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
{
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.
Your ReSharper C++ team
JetBrains
The Drive to Develop