ReSharper C++ vs. Visual Assist

This document describes how ReSharper C++ differs from Whole Tomato's Visual Assist.

As both products are being actively developed and their functionality changes on a regular basis, we consider this comparison valid for specific releases that are indicated in the header of the comparison table.

If you discover any inaccurate items in this table, please post a comment below to let us know, and we'll update the table as soon as possible.

Visual Assist in Visual Studio 2019 + Visual Assist Build 2341
in Visual Studio 2019 + ReSharper C++ 2019.2

Supported Visual Studio versions

Visual Studio 2019 Visual Studio 2019
Visual Studio 2017 Visual Studio 2017
Visual Studio 2015 Visual Studio 2015
Visual Studio 2013 Visual Studio 2013
Visual Studio 2012 Visual Studio 2012
Visual Studio 2010 Visual Studio 2010
Visual Studio 2008 Not supported
Visual Studio 2005 Not supported
Visual Studio .NET 2003 Not supported
Visual Studio .NET 2002 Not supported
Visual C++ 6.0 Not supported

Supported C/C++ specifications

C/C++ C/C++
C++/CLI C++/CLI

Detection of code issues

Highlight mistyped symbols Highlight unresolved symbols
Navigation between code issues (tool window, editor) Navigation between code issues (tool window, editor, dedicated commands)
21 Clang-Tidy inspections 264 integrated Clang-Tidy checks
No matching functionality 652 integrated Clang-Tidy diagnostics
No matching functionality 87 integrated Clang Static Analyzer Checks
Spell-checking Spell-checking
Highlight mismatched delimiters No matching functionality
No matching functionality Inconsistent Naming
Zero constant can be replaced with nullptr Zero constant can be replaced with nullptr
Overriding function without 'override' specifier Overriding function without 'override' specifier
Constructor of shared_pointer/unique_pointer can be replaced with make_shared/make_unique Constructor of smart pointer used instead of its make function
No matching functionality 180+ more proprietary code inspections
No matching functionality Code inspections for most compiler errors and some warnings
No matching functionality Asynchronous search for code issues in any scope
No matching functionality Running code inspection from command line

Quick-fixes for code issues

Create from usage Create from usage
Add #include Import global variable, type, type definition, function, macro
Create declaration Create declaration
Repair case No matching functionality
10+ quick-fixes for configurable inspections 120+ quick-fixes for configurable inspections

Coding assistance

Highlight matching delimiters Highlight paired items (including macros and format arguments in printf and boost::format)
Highlight current line Highlight current line
Acronyms / Shorthand CamelHumps
Suggestion lists / Smart suggestions Code completion with smart suggestions
Convert dot to -> Convert dot to -> and -> to dot
Smart select Extend/Shrink selection + Select containing declaration
Multiple clipboards Clipboard history with preview of items
Parameter info Parameter info
No matching functionality Editor hints
Enhanced syntax coloring (6 different identifier kinds) / Stable symbols in italic / Local symbols in bold Syntax highlighting (20 different identifier kinds)
Highlight references to symbol under cursor Highlight usages in file
Surround selection Surround with / Comment with line or block comment
Insert closing tokens automatically Auto insert matching delimiter and format
Quick info with documentation Syntax highlighted tooltips with documentation
Auto-extend multi-line comments on Enter Auto-extend multi-line /**/ and /// comments on Enter
Insert underscore after m and Shift No matching functionality
Enhanced listboxes No matching functionality
Highlight matching words (code and comments) No matching functionality
Column (right margin) indicator No matching functionality
Sort lines No matching functionality
Insert path No matching functionality
Preview files from comments No matching functionality
Reset editor zoom No matching functionality
No matching functionality Duplicate current line or selection
No matching functionality Postfix completion
No matching functionality Postfix templates
No matching functionality Quick documentation
No matching functionality Auto-highlighting of function exits

Code style assistance

Format after paste (formatting rules are inherited from Visual Studio) Apply formatting rules in any scope (with ReSharper C++'s own extensive set of formatting rules)
No matching functionality Learn formatting rules from existing code
No matching functionality EditorConfig support
No matching functionality Clang-Format support
No matching functionality Apply code styles and remove code redundancies in any scope with code cleanup
No matching functionality Configurable file header style
No matching functionality Configurable naming style with predefined schemes (STL, Google, LLVM, CamelCase, Microsoft)
No matching functionality Configurable style for const and volatile modifiers in generated code
No matching functionality Configurable style for include directive in generated code
No matching functionality Configurable style for default pointer initializers (0|nullptr|NULL) in generated code

Refactorings and code transformations

Access to Refactoring Commands Refactor this
Rename Rename
Change signature Change signature
Introduce variable Introduce variable
Encapsulate field Encapsulate field (with Generate getters and setters action)
Extract method Extract method
Add/Remove braces Add/Remove braces
Rename files Rename file
Move implementation to source file Move implementation out of class scope
Move Implementation to Header File / Class Declaration No matching functionality
Move selection to new file No matching functionality
Snippets for refactorings (editable) No matching functionality
Convert Instance to Pointer and vice versa No matching functionality
Simplify Instance Declaration No matching functionality
No matching functionality Introduce field
No matching functionality Inline variable
No matching functionality Introduce namespace alias
No matching functionality Introduce/Inline typedef
No matching functionality Add = default, = delete, pure, or virtual specifier to a function
No matching functionality Convert ?: to if and vice versa
No matching functionality Convert #include directive from angle-bracket to quoted form and vice versa
No matching functionality Convert typedef declaration into alias declaration and vice versa
No matching functionality Convert to nested namespace definition
No matching functionality Convert regular return type into trailing return type and vice versa
No matching functionality Create derived type: class, interface, struct, interface class, interface struct, ref class, ref struct
No matching functionality Flip relational operator
No matching functionality Flip operator arguments
No matching functionality Initialize field from constructor parameter
No matching functionality Invert if statement
No matching functionality Merge nested if statements
No matching functionality Negate logical expression
No matching functionality Remove braces
No matching functionality Replace 'auto' with explicit type declaration
No matching functionality Replace 'decltype' with the underlying type
No matching functionality Replace 'decltype(auto)' with explicit type declaration
No matching functionality Split or join declaration with multiple declarations
No matching functionality Substitute macro call
No matching functionality Substitute template type alias
No matching functionality Specify template arguments explicitly
No matching functionality Substitute typedef (and, optionally, all nested typedefs)

Code generation

Implement Interface / Virtual Methods Generate missing / overriding members
Create implementation Generate implementation + Generate inline implementation
Create method implementations Generate definitions
Add missing case statements Generate missing case statements for enum
Document method Document symbol
Add Forward Declaration Add Forward Declaration
Add member No matching functionality
Add similar member No matching functionality
No matching functionality Generate constructors
No matching functionality Generate copy and move operators
No matching functionality Generate getters and setters
No matching functionality Generate equality operators
No matching functionality Generate relational operators
No matching functionality Generate stream operations (including Boost.Serialization functions)
No matching functionality Generate hash function
No matching functionality Generate swap function
No matching functionality Generate Google Mock methods
No matching functionality Generate function that converts enum to string (configurable)
No matching functionality Create derived type

Code snippets/templates

VA Snippets 30 built-in live templates + custom live templates
Surround with snippets 19 built-in surround templates + custom surround templates
Create file (needs to be called twice for header and cpp) Built-in file templates for class and struct (create both header and cpp at once) + custom file templates
Reserved strings /environment placeholders in snippets Macros in code templates
Snippet editor Template editor
Create snippet from selection Create live template from selection
No matching functionality Multi-file templates

Navigation & search

Go to declaration (with Goto) Go to declaration (usage-aware)
Go to implementation (with Goto) Go to implementation
VA outline File structure
Recent files (VA view) Go to recent files
Open file in solution Go to file
Find symbol in solution Go to symbol
Goto related Go to related files
Goto member Go to file member
Move scope Go to next/previous member
Find references Find usages
Find by context Go to next/previous highlight / Find Results window
Open corresponding file Switch between header and source
Navigate back and forward Move through navigation history
VA Hashtags Bookmarks
Source Links To-do items with external URL patterns
List methods in file No matching functionality
VA navigation bar No matching functionality
Hovering class browser No matching functionality
Highlight project files in the Output window No matching functionality
Highlight find results No matching functionality
No matching functionality Search everywhere
No matching functionality Go to text
No matching functionality Go to recent edits
No matching functionality Go to previous edit
No matching functionality Navigate to
No matching functionality Go to base symbols
No matching functionality Go to derived symbols
No matching functionality Go to type of symbol
No matching functionality Go to file nearby
No matching functionality Type hierarchy
No matching functionality Hierarchy of includes
No matching functionality Go to primary template/specializations
No matching functionality Locate current file in Solution Explorer
No matching functionality Find actions and settings
No matching functionality Breakpoints navigation and tool window
No matching functionality Includes analyzer

Debugging

Step filters Step filters
Temporarily disable all enabled breakpoints No matching functionality
Temporarily bind all breakpoints to the current thread No matching functionality
No matching functionality Inline watches
No matching functionality Searchable DataTips

Unreal Engine

Support for UE4 projects Support for UE4 projects
Smart Suggestions for UE4 reflection specifiers Code completion for UE4 reflection specifiers
No matching functionality Quick documentation for UE4 reflection specifiers
UE4 remote procedure calls support UE4 remote procedure calls support
No matching functionality Rename and Change Signature refactorings for UE4 RPC functions
Exclude engine source from navigation No matching functionality
No matching functionality Postponed indexing of engine code
No matching functionality UE4 naming conventions support
No matching functionality UE4-specific code inspections

Unit testing

No matching functionality Unit Testing Assistance for Google Test, Catch 2.5, Boost.Test, and doctest frameworks

Settings management

Import/export settings Automatic multi-layer synchronization of settings and custom templates