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
|
in
|
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 |