ReSharper C++ 2020.3 EAP: Updates in Navigation, Unit Testing, and C++20 Support in Visual Studio 16.8
The new ReSharper C++ EAP build is now available!
In this build, we’ve introduced several navigation improvements, supported the C++20 conformance changes in Visual Studio 16.8, and updated our support for Catch2 parameterized tests. Read on for details:
Download the new EAP build from our website or via the Toolbox App.
The most commonly used action when navigating through source code is Go to Declaration. To make the code navigation experience even smoother, you can now also use Go to Declaration on an
override keyword to navigate to the base function, instead of invoking the separate Base Symbols action on the function’s name:
In addition to the already available Peek Declarations and Peek Usages actions, Peek Implementations and Peek Base Symbols come to C++! Peek allows you to view and edit code in a popup window without switching away from the code that you’re writing.
Press Ctrl+Alt+Q or use the ReSharper | Navigate | Peek menu to peek at implementations.
Press Shift+Alt+Q or use the ReSharper | Navigate | Peek menu to peek at base symbols.
File Structure now uses the C++17 syntax for nested namespaces. For better readability, a single nested namespace definition is shown even if you have not yet adopted the syntax in your codebase:
We’re continuing to improve the C++/CLI support. For example, Go to Derived Symbols now works for
set functions inside C++/CLI properties and
remove functions inside C++/CLI events.
C++20 support in VS 16.8
The recently released Visual Studio 16.8 Preview 3 brought a huge number of updates for C++20 support in Visual Studio. In this EAP we’ve tweaked our C++20 support according to the latest changes in Visual Studio:
Previously, Visual Studio only provided early experimental support for coroutines under the
/awaitcommand-line compiler switch. Visual Studio 16.8 brings support for standard coroutines under the
/std:c++latestswitch. We’ve updated ReSharper C++ to support standard coroutines and the new
/std:c++latestswitch now automatically enables the standards conformance mode (controlled by the
/permissiveswitch), which turns off most of the non-standard MSVC-specific behavior.
Parameterized tests in Catch2
Catch2, a popular unit testing framework for C++, overhauled its support for test cases parametrized by types in last year’s 2.8 release. At the same time, Catch2 also introduced signature based test cases. ReSharper C++ now supports the updated
TEMPLATE_PRODUCT_TEST_CASE macros, as well as the new
TEMPLATE_PRODUCT_TEST_CASE_SIG macros, in Catch 2.8 and later releases.
A new inspection suggests replacing usages of standard algorithms that accept a pair of iterators with equivalent algorithms that accept an iterator and a count where possible:
Visual Studio 15.6 introduced a little-known but useful set of
/external:* compiler switches to suppress compiler warnings in external libraries. If you use the
/external:I or the
/external:env switches to specify include paths to third-party libraries, ReSharper C++ will now be able to automatically pick up and use these include paths.
Finally, we’ve fixed an issue when stopping a debugging session from the Unit Test Sessions window would sometimes fail to stop the Visual Studio debugger and leave the session in a broken state.
Those are the biggest highlights for this EAP build, the full list is available in our issue tracker. If you want to know more about what is coming in future builds, check out the 2020.3 roadmap. Stay tuned!
Your ReSharper C++ team
The Drive to Develop