Early Access Program

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.

DOWNLOAD RESHARPER C++ 2020.3 EAP

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:

Go to Declaration on an override keyword

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.
    Peek Implementations
  • Press Shift+Alt+Q or use the ReSharper | Navigate | Peek menu to peek at base symbols.
    Peek 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:

Nested namespaces in File Structure

We’re continuing to improve the C++/CLI support. For example, Go to Derived Symbols now works for get/set functions inside C++/CLI properties and add/remove functions inside C++/CLI events.

Go to Derived Symbols for get/set

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 /await command-line compiler switch. Visual Studio 16.8 brings support for standard coroutines under the /std:c++latest switch. We’ve updated ReSharper C++ to support standard coroutines and the new <coroutine> header.
  • The /std:c++latest switch now automatically enables the standards conformance mode (controlled by the /permissive switch), 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_TEST_CASE and TEMPLATE_PRODUCT_TEST_CASE macros, as well as the new TEMPLATE_TEST_CASE_SIG and TEMPLATE_PRODUCT_TEST_CASE_SIG macros, in Catch 2.8 and later releases.

Parameterized tests in Catch2 2.8+

Other changes

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:

Use algorithm accepting count

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!

DOWNLOAD RESHARPER C++ 2020.3 EAP

Your ReSharper C++ team
JetBrains
The Drive to Develop

image description