ReSharper C++

Visual Studio extension for C++ development.

Published by JetBrains
Distributed by ComponentSource since 2007

Prices from: $ 155.82 Version: 2020.2.3 NEW Updated: Sep 18, 2020

i

New licenses for ReSharper C++ are now available as part of ReSharper. All existing, current ReSharper C++ licenses are now automatically valid for both ReSharper and ReSharper C++ products.

ReSharper C++ 2020.1

Released: Apr 16, 2020

Updates in 2020.1

Features

C++20

  • Using enum - ReSharper C++ 2020.1 adds support for using enum declarations, which let you bring specific enumerators from a scoped enumeration into the local scope. A new refactoring, Introduce Using Enum, is available to help you add using enum declarations to existing code.
  • C++20's Concepts - For C++20's Concepts, ReSharper C++ supports the new syntax for constrained type placeholders and abbreviated function templates. Improved error messages about unsatisfied constraints help you understand what went wrong during template substitution.
  • Template syntax for lambdas - ReSharper C++ also suggests a quick-fix for using template syntax for lambdas when doing so helps you avoid errors or unify your use of lambdas and functions.

Unreal Engine

  • ReSharper C++ 2020.1 improves the Rename refactoring in Unreal Engine projects. Now it updates the corresponding *.generated.h include directive and related files with the A, F, E, T, S, and U prefixes.
  • When ReSharper C++ detects an Unreal Engine project, it tweaks the default settings to stop suggesting Use auto to better align with the Unreal Engine guidelines. Also, ReSharper C++ 2020.1 includes updated naming rules for console variables and log categories. You can now navigate to namespaces that contain an enumeration in the Unreal Engine style from Search Everywhere/Go to.
  • Finally, ReSharper C++ now also supports USF files with virtual file paths and SpatialOS GDK.

HLSL (Experimental)

  • ReSharper C++ 2020.1 now provides initial support for HLSL, the High-Level Shading Language. ReSharper C++ highlights HLSL code according to your default color scheme and displays inlay hints and tooltips for code elements with type information and documentation. You can also search for and quickly navigate to structs, functions, or parameters in your entire solution, referenced files, and standard libraries. And to perfect the HLSL experience, ReSharper C++ offers you smart code completion, auto-inserting matching delimiters, and more.

Code analysis

  • Several new inspections are available for the following issues, with corresponding quick-fixes that help you resolve them:
    • Unused lambda capture.
    • Lambda can be rewritten to use explicit template parameters.
    • Functional-style cast used instead of a C++ cast.
    • reinterpret_cast used instead of a static_cast when casting to void*.
  • Two more features help you adopt the C++17 maybe_unused attribute:
    • A quick-fix to add [[maybe_unused]] to an unused parameter or variable.
    • A context action to replace UNREFERENCED_PARAMETER and Q_UNUSED annotations with [[maybe_unused]].
  • The bundled Clang-Tidy binary has been updated to Clang 10, adding more than 70 new checks and compiler diagnostics from the latest LLVM release.

Code completion

  • The completion list now suggests label names, standard C++ attributes, the new std::forward postfix template, and arguments for calls to a base function. Additionally, ReSharper C++ now provides code completion in macro bodies.

Coding assistance

  • Two well-known features from ReSharper for .NET have finally come to ReSharper C++:
    • Rearrange Code quickly moves code elements around, expands or shrinks the current scope, and more.
    • Complete Statement inserts the required syntax elements to finish the current statement and puts the caret in the right place.
  • With improved typing assistance, you can now select any piece of code and type a parenthesis, brace, bracket, or quote to surround the selection with the corresponding characters. The code readability helpers - parameter name hints and type hints - are now available in dependent code.
  • The new Document edit action, bound to Ctrl+/ by default, lets you quickly generate a documentation comment for the nearby code element instead of using the context action.

Enum refactorings

  • ReSharper C++ 2020.1 introduces two new refactorings to help you upgrade your enum usage:
    • Convert to Scoped Enum converts a C-style enumeration declaration into a C++11 scoped enumeration.
    • Introduce Using Enum adds a C++20 using enum declaration and shortens enumerator references to make your code easier to read.

Navigation

  • Code navigation features have been extended to be even handier:
    • Go to Declaration is available on identifiers inside comments.
    • Search Everywhere/Go to includes two new filter categories: concepts and namespaces. Type “/” in the search box to see all the available filters.
    • You can now middle-click (click your mouse’s scroll button) to Go to Declaration.
  • In the File Structure window, the icons now have indicators for class member accessibility, inheritance, and virtual/static/pure specifiers.

Sorting of include directives

  • ReSharper C++ 2019.3 allowed you to sort #include directives, rearrange existing groups, and create new ones separated by blank lines. ReSharper C++ 2020.1 adds two new settings to make this action even more configurable:
    • Case-sensitive sort.
    • Group headers by directory.
  • And it's now possible to import the sorting settings from a .clang-format file if Read code style from .clang-format style is checked on the ReSharper | Options | Code Editing | General Formatter Settings page.

Other changes

  • ReSharper C++ 2020.1 comes with several other noteworthy changes:
    • Generate dialogs provide an option to mark the generated getters and constructors with the C++17 [[nodiscard]] attribute.
    • Generate mock functions support the MOCK_METHOD macro introduced in GTest 1.10.
    • The new setting Use named pipes to communicate with child processes allows you to fix unit tests that are misbehaving because of security software.