|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
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 )
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.
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.
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?)
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.