ReSharper C++ 2022.2 is focused on quality improvements and Unreal Engine support. This release introduces Blueprint-specific inlay hints and inspections and significantly improves the indexing performance for Unreal Engine projects.
Free 30-day trial available
ReSharper C++ introduces Blueprint-specific inlay hints and allows you to see the bigger picture behind your code:
UFunction
has implementations in Blueprints and search for
all such cases.
UProperty
, including whether it has been
overridden and what value is set in the Blueprint file.
We’ve also introduced two inspections to let you know if there are inconsistencies between the Blueprint-specific function specifiers used in the code and the Blueprints themselves:
UFunction
with the BlueprintCallable
function specifier
is supposed to be used in a Blueprint, but no usages are found.
UFunction
with the BlueprintImplementableEvent
function
specifier is supposed to be implemented in a Blueprint, but no implementations are
found.
We’ve significantly improved the indexing speed of Unreal Engine projects. As a result of caching of precompiled headers, ReSharper C++ now indexes your code base up to twice as fast as before.
This experimental performance boost is currently available for Visual Studio 2022 only.
ReSharper C++ now supports Spec tests from the Unreal
Engine automation testing framework. If you have a set of tests defined in the Define
method after the DEFINE_SPEC
macro or the
BEGIN_DEFINE_SPEC/END_DEFINE_SPEC
macros,
ReSharper C++ will successfully discover them. In the
Unit Test Sessions window, you can review the results of the tests and rerun
failed tests, all tests, or specific tests.
The code completion list now includes Widgets metadata specifiers.
ReSharper C++ now properly handles Unreal Engine containers
in Emplace
calls, bringing improved search and navigation features, parameter
name hints, and warnings about invalid arguments.
If you are interested in a stand-alone cross-platform IDE for Unreal Engine development, consider Rider. Unreal Engine support in Rider and ReSharper C++ is aligned and you can expect the same improvements in the Rider 2022.2 update.
We've improved the readability of error tooltips by adding syntax highlighting. The error highlighting range also became more precise. For example, when getting an aggregate initialization warning, you can now tell at a glance exactly which subobject caused an initialization failure.
Parameter name hints now support make
- and emplace
-like
function calls.
We’ve updated the bundled Clang-Tidy binary to Clang 14, adding new checks from the latest LLVM release.
ReSharper C++ 2022.2 also brings updates for Boost tests and introduces support for the Public Include Directories and All Header Files are Public project properties.
Take a look at What's New in ReSharper to learn about the other changes introduced in this release. For example, you can now remove temporary files generated by ReSharper while it is working on your code (ReSharper | Options | Environment | Disk Cleanup).
Free 30-day trial available
ReSharper C++ 2022.1 brings a brand new way to quickly consult the Unreal Engine documentation about the details of a class, symbol, or function. You can now click Read more in the Quick Documentation pop-up (Ctrl+Shift+F1) to open the corresponding page in your browser.
The Rename refactoring now handles the Unreal Engine interface classes
better. When renaming interfaces, both the U
and I
classes will be renamed accordingly.
ReSharper C++ can now substitute the parameter names when you generate a member function signature from the Unreal Engine delegate.
You can now also generate such functions when the ThisClass
typedef is used.
Here is a short overview of the most important Unreal-related fixes delivered in this version:
.Build.cs
and .Target.cs
files.
.Build.cs
and .Target.cs
files on Unreal Engine 4.
DOREPLIFETIME_WITH_PARAMS_FAST
and
MARK_PROPERTY_DIRTY_FROM_NAME
push model macros –
ReSharper C++ now is aware of entities generated
by the replication system, such as ENetFields_Private
enum.
The Unreal Engine testing framework is now supported. ReSharper C++ discovers Unreal Engine unit tests and adds the corresponding action indicators next to each test in the editor to run or debug the test or the whole test suite. In the Unit Test Sessions window, you can review the results of the tests, and rerun failed, all, or specific tests.
The new version of the Catch2 unit test framework brings significant changes – it’s now split into multiple headers and has a statically compiled library as its distribution model. It means you now have to include several headers, but the compilation time is improved. So if you’d like to check out the updated Catch2 unit test framework, ReSharper C++ 2022.1 has full support to help you with it.
ReSharper C++ 2022.1 also includes updates for the latest releases of GoogleTest and doctest, as well as various unit testing fixes.
ReSharper C++ is now better at handling implicit constructor calls, allowing you to find usages and navigate to the called constructor in more cases, including the following:
make_unique/make_shared
) and Unreal-specific
(MakeShared/MakeUnique
) smart pointer creation functions.
emplace
-like container methods.static_cast
and c-style cast expressions.
ReSharper C++ now also shows you an overloading
warning when an emplace
-like function is called with incorrect arguments.
ReSharper C++ 2022.1 improves the multiline generation of boilerplate code for aggregate initialization using C++20 designated initializers. You can now invoke completion on the next line if you’d like to see each initializer on a new line.
ReSharper C++ now treats the C++20
requires
-expressions correctly, allowing you to configure spaces
formatting via the Around ‘->’ in trailing return types option.
Use the new Line feed at the end of file option to control adding or removing a blank line from the end of files.
Take a look at What's New in ReSharper to learn about the other changes introduced in this release. For example, you can now autodetect syntax style settings for C# files.
ReSharper C++ now supports the new Visual Studio 2022 release build, meaning you will have access to the same rich feature set you are used to using in other Visual Studio versions. Since Visual Studio 2022 is an x64 process, there is no longer a limit to the maximum amount of memory that can be allocated to it, and all the ReSharper С++ features work faster.
To work with ReSharper C++ in Visual Studio 2022, make sure that the VS2022 icon in the dotUltimate 2021.3 installer is selected.
You can use C++20 designated initializers to quickly generate boilerplate code for aggregate initialization (P0329). Just select the corresponding item from the completion list to insert designators for the data members, and then provide the initial values.
With the C++20 contains
function, you can easily check whether an element exists
in an associative container
(P0458). A new inspection suggests replacing instances of
find
or count
with the new contains
member function.
The new standard brings convenient library functions for erasing elements that work
for all standard containers
(P1209).
A dedicated inspection will let you know when an erase-remove idiom can be replaced
with std::erase
or std::erase_if
.
Another new library addition is the smart pointer creation functions that perform
default initialization
(P1973).
When you need to allocate an array of built-in types and then immediately initialize
it, you can now apply a quick-fix to use make_shared_for_overwrite
or
make_unique_for_overwrite
.
With ReSharper C++ 2021.3, you no longer need to switch to Unreal Editor to create a new class – all predefined templates for Unreal Engine classes are now available in the list of ReSharper file templates.
To create a new class, go to Solution Explorer and right-click on the preferred project folder to open the Add menu (or use Ctrl+Alt+Insert). After you choose an Unreal Engine template from the list and give your new class a name, ReSharper C++ will generate the header and source files with the template code in the proper folders depending on whether the folder is private or public.
ReSharper C++ now works correctly with the Unreal Engine Sparse Class Data system.
We’ve fixed an issue that would sometimes cause ReSharper to reindex source code when a solution was loading.
A new inspection marks redundant parentheses in lambdas with no parameters, since a parameter list is not required in such cases.
When an elaborated type specifier is used neither to declare a new class nor to refer to a previously declared but hidden class, ReSharper C++ will suggest removing the specifier.
A new inspection finds for
loops that can be written in a more concise
way as while
loops. The accompanying quick-fix lets you quickly rewrite
them.
User specializations of classes like std::hash
or std::formatter
are often wrapped in a standalone namespace. To make your code more readable,
ReSharper C++ suggests using a qualified class name instead.
If you construct an object of an exception type but do not use it,
ReSharper C++ now warns you and lets you quickly
add the throw
keyword.
The bundled Clang-Tidy has been updated to Clang 13, adding new checks from the latest LLVM release.
The Quick Info tooltip now includes the evaluation results for constant
expressions. You can use this feature to see what subexpressions of a failing
static_assert
expression evaluate to, or to check out the value of
a sizeof
or alignof
operator.
In addition to the Document action (via the Alt+Enter menu or the
Ctrl+/ shortcut), you can now generate a stub for a new documentation
comment by typing ///
before a function or another entity you want to document.
The File Structure window now groups symbols with the same qualifier. This is especially useful in source files that contain a lot of out-of-class functions.
ReSharper C++ 2021.3 allows you to search for declarations in inactive code, where navigation was previously not available.
You can also now navigate from a goto
statement to the corresponding label.
The Change Signature refactoring now lets you easily control the
C++17 [[nodiscard]]
attribute, which indicates that the function
caller should use the function’s return value.
ReSharper C++’s 2021.3 supports C11 _Generic
expressions, which provide a mechanism for limited compile-time choices in C.
We’ve also introduced support for typeof
– a
GNU extension to the C language for referring to the type of
an expression.
Take a look at What's New in ReSharper to learn about the other changes introduced in this release. For example, additional GitHub-related items in the Copy Code Reference pop-up make it easy to share links with people, and you can also add a custom URI template for non-GitHub repositories.