Work@Microsoft    Live@Seattle

Best C++ Refactoring Tools (Visual Assist vs. ReSharper C++) in the Market

Best C++ Refactoring Tools (Visual Assist vs. ReSharper C++) in the Market
5 (100%) 1 vote

Visual Assist and ReSharper C++ are the best C++ Refactoring Tools in the market.  Here is a personal comparison of the tools in terms of performance, features, stability, etc.

Visual Assist (VA)ReSharper C++
VA components are very fast.  Indexing a new solution takes a while, but runs unobtrusively in the background and is one-time at solution generation. No notable regression on VS’s start time or runtime performance of VS components.

ReSharper’s search/navigation/UI/etc are generally pretty fast. Indexing a new solution takes less time than VA, but sometimes freezes up VS more heavily than VA does. There is observable impact on VS’s start time, and minor impact on VS’s runtime performance.
I don’t think I’ve ever had VA bring down Visual Studio.

ReSharper crashed once or twice in my experiments
VA scales just fine to the limits of what I’ve used winide/VS with (solutions of ~30 projects and ~200k lines)

I only played with ReSharper in the context of relatively contained solutions (~2-15 projects), scalability seemed fine within the limits I tested
Highlighting features
Special formatting for macros, can distinguish things defined in publics vs yours, etc

Comparable to VA’s, but doesn’t do as well at distinguishing publics vs non-publics (and super subjectively, I like its default color scheme less )
Navigation features
Huge improvement over VS, number one reason to use this product. Fast goto anything, fast goto file, one-key switch impl/header, etc. Sometimes gets hung up with tricky macros (notably, can’t goto definition on the Name in TAEF TEST_METHOD(Name) macro).

Everything VA does, but slightly better intuition in “find anything” and can resolve TAEF TEST_METHODs.
Refactoring features
Has reasonable basics (extract method/function, split inline method to impl file, rename, etc), but everything but rename generally requires little hand edits anyway, so not that useful.

JetBrains is the refactoring tool company, and it shows. Not as advanced as what they can do for more established products (Java, Ruby, etc), but still more refactorings and more reliable than VA’s.
Analysis features
Doesn’t add any notable warnings/detections/etc

Adds a huge variety of new static analyses, some of which are super, super nice (eg, “did you mean to make a single-arg constructor non-explicit?”)
Modern C++ compatibility
Nothing breaks in heavily modernized C++ codebases (it highlights lambdas, move semantics, etc just fine), but there’s also nothing significant that it adds specifically to this.

Several analysis features and refactoring features are rvalue-reference aware, etc. But not everything (move constructor generation?)
C# Compatibility
Technically claims support for C#, but doesn’t add much.

Best in class C# tool. If you do mixed language solutions, sharing UI and keybindings is very nice.


Besides these tools, the C++ Extract Function extension for Visual Studio 2015 can also extract selected code into its own function and replaces the selected code with a function call.

Comments to Best C++ Refactoring Tools (Visual Assist vs. ReSharper C++) in the Market

  • Visual Smarter provides more than 200 refactoring tools/coders/widgets already. And the number is still going up.

    Visual Smarter August 16, 2015 6:05 pm Reply

Leave a Comment

Your email address will not be published. Required fields are marked *