– ReSharper C++ starts analyzing code as soon as you open your project in Visual Studio editor, and keeps reanalyzing files as you edit them, detecting errors and possible problems before you even compile.
– ReSharper C++ highlights code issues in the editor and provides quick-fixes to improve the code in one way or another. Unreachable code? Redundant statements? Suspicious object slicing? Incorrect format specifier? ReSharper C++ will bring these and other kinds of problems to your attention and help you to fix them.
– You can instantly jump to any file, type, or type member in a solution. You can search for usages of code and get a clear view of the found usages, with the grouping and preview options. Last but not least, you can go from any code symbol to its declaration or definition, its base or derived symbols.
– Code refactorings for C++ help you safely change your code base, which is especially important in a language as complex as C++. Context actions help switch between alternate syntax constructs and serve as shortcuts to code generation actions.
– Code that ReSharper C++ can generate for you includes definitions, missing and overriding members, equality and relational operators, and hash and swap functions. Add to this dozens of customizable templates, and you have the tools to deal with boilerplate code more effectively than ever before.
– ReSharper C++ supports running Google Test and Boost.Test based unit tests in Visual Studio. You can run and debug unit tests contextually, right from the text editor. Dedicated tool windows help you view, group, filter, and run unit tests, and create and manage unit test sessions.
– Configure the code formatting options and naming style, and share settings with your teammates; maintaining a consistent code style should never again be a problem.
– The C++20 standard has almost been signed off on, and ReSharper C++ extends its support for the latest standard. Several new language features are now supported, including constrained type placeholders, abbreviated function templates, and using enum declarations. Additionally, ReSharper C++ offers a quick-fix to update a lambda declaration with the C++20 template syntax and a refactoring to introduce using enum declarations with ease.
– The well-known Rearrange Сode and Complete Statement features from ReSharper for .NET have finally come to ReSharper C++! The completion list now includes standard C++ attributes, label names for the goto statement, the new std::forward postfix template, and arguments for calls to a base function. In addition, code completion now works in macro definitions.
– With updates to its Unreal Engine support, ReSharper C++ 2020.1 improves the Rename refactoring and introduces support for SpatialOS GDK and USF files with virtual file paths. ReSharper C++ also adheres more closely to the Unreal Engine guidelines by suppressing the Use auto inspection and following naming conventions for console variables and log categories. ReSharper C++ 2020.1 provides initial support for HLSL. Even at this early stage, this support includes a variety of features, from basic code highlighting to smart code completion and quick navigation.
– 40+ quick-fixes are available to instantly solve many of the detected code issues. Whenever you see a light bulb to the left of your code, press Alt+Enter to apply a suggested quick-fix. For example, when an uninitialized variable is detected, you can immediately initialize it with the default value. Other quick-fixes let you add missing #include directives, or remove redundant qualifiers in a particular statement, or in a larger scope such as a file or even the entire solution.
– Another benefit of quick-fixes is that you can start using classes, methods, variables, properties and fields before you declare them. When ReSharper C++ detects an undeclared symbol, it suggests quick-fixes to generate the corresponding symbol declaration based on its usage.
– For any given scope such as a file, project or solution, you can tell ReSharper C++ to display all code issues that it detects in a dedicated tool window. Find Code Issues works in the background, which lets you keep editing or navigating your code while ReSharper C++ runs its analysis and populates the Inspection Results tool window. As soon as results are ready, you can group them by various criteria and search to find specific types of issues. You can also save and load reports of Find Code Issues results.
– ReSharper C++ code inspections are also available via InspectCode, a free command line tool that allows running ReSharper inspections outside of Visual Studio. To use InspectCode, please download and unzip the command line tools package and run InspectCode.exe with your solution file as a parameter. To learn more about using InspectCode, please read this article.
– ReSharper C++ integrates seamlessly with Clang-Tidy, a powerful open-source code analysis tool based on the Clang compiler. The integration provides code checks and the quick-fixes.
– ReSharper C++ provides several full-scale, mainstream refactorings such as Rename, Extract Method and Change Signature. In addition, it offers dozens of context actions, which are local code transformations available with a single shortcut.
– Modifying the name of a class or macro can cause many problems when performed manually. That’s why, when you invoke the Rename refactoring, ReSharper C++ takes care of all the necessary checks. Either all modifications are performed automatically, or you’re shown a list of conflicts that you can resolve manually to be sure that only necessary and appropriate changes are made. Along with actual code symbols that you apply it to, the Rename refactoring can rename related files (both the source file and the header file) and related text in comments and documentation, as well as update usages in #include directives.
– The Extract Method refactoring helps you create a new method based on a selected code fragment. ReSharper analyses the selected block of code and detects variables that can be converted into method parameters or represent its return value.
– The Change Signature refactoring allows you to apply one or more changes to the signature of a function. All usages, implementations, and overrides of the function will be updated accordingly.
– The Introduce Variable refactoring allows you to create a new local variable based on a selected expression, initialize it with the expression, and finally replace all occurrences of the expression in the code with references to the newly introduced variable. Conversely, Inline Variable replaces all occurrences of a given variable or local constant with its initializer.
– The Introduce Field refactoring helps create a new field based on a selected expression, assign the original expression to the field in its own initializer or in the constructor, and replace occurrences.
– The Introduce Namespace Alias refactoring helps define shortcut names for deeply nested namespaces. As soon as you invoke the refactoring, it suggests defining a scope that you want to introduce a namespace alias for.
– The Introduce typedef refactoring allows you to quickly create a typedef for the selected data type and replace this data type and all its occurrences with the newly created typedef. The Inline typedef refactoring does the inverse: it replaces an existing typedef with the actual data type.
– In addition to refactorings, ReSharper C++ provides a set of context actions: local code transformations that usually help switch between alternative syntax options. Similar to quick-fixes, they are made available when you press Alt+Enter. For example, you can quickly replace auto with explicit type or replace type with auto. Other context actions help merge nested if statements, generate missing case statements when switching over an enum, substitute a macro call or typedef etc.
– ReSharper C++ extends Visual Studio’s ways of highlighting syntax and matching structural pieces of code, provides its own implementation of code completion, and helps visualize available documentation for any C