My product team is evaluating purchasing JetBrains ReSharper or DevExpress CodeRush to assist with improving code quality in our .NET application portfolio. I have been a ReSharper user for several years, and have only just heard about and trialed CodeRush over the last few days. So, what follows is indeed an unfair comparison just due to the amount of experience I have with each.
TL;DR
I vote for ReSharper.
Observations
I have grouped the observations below by feature in no particular order. This is certainly not a comprehensive list, and they do not account for deviating from the default configuration settings in either product.
CodeRush IntelliRush
Seems irrelevant since Visual Studio 2017 includes essentially the same feature.
CodeRush Structural Highlighting
Seems irrelevant since Visual Studio 2017 includes essentially the same feature.
Keyboard Shortcuts, Templates, Code Expansion
Very similar in concept between the two products with differing implementations. I have not leveled up to power user in shortcuts, though, and therefore did not perform a super thorough comparison.
Code Cleanup [ReSharper++
]
Code Cleanup is my favorite feature of ReSharper, and I use it daily. CodeRush has it as well, but, in my short trial, it seems lacking.
- ReSharper puts color-leveled squiggles under suggested refactors by default. CodeRush requires the cursor to be directly on the code and then clicking the lightbulb to see similar suggestions. Maybe there is an option to enable highlighting in CodeRush, but I could not find it.
- ReSharper seems to suggest a much higher number of refactors than CodeRush in the same files. Again, I have no empirical data to back this up; I just performed a quick inspection.
- ReSharper makes things like potentially unhandled exceptions much more evident than I can get CodeRush to flag.
- CodeRush does have the ability to flag spelling errors in member names, comments, etc., which is something I have not seen ReSharper able to do.
- CodeRush does not support running Code Cleanup just against a selection of text. This is key since I practice refactoring only methods I am touching already (and therefore taking development “ownership” of the method). ReSharper allows me to select a method that I am already changing (I know, O/C principle, but we are not there yet) and run Code Cleanup just against that one method. CodeRush seems to cleanup suggestion-by-suggestion or the entire file.
Extraction [ReSharper++
]
Both provide the ability to quickly extract methods from other methods and classes from other classes. ReSharper provides a much more thorough wizard experience when doing so, however, such as customizing return type, input/output params, access level, etc. CodeRush seems to assume you always want to follow their opinionated pattern.
Debug Visualizer [ReSharper++
]
This feature is fairly new to ReSharper but seems pretty similar in both products. I prefer the interface of ReSharper’s implementation a bit more, but that may very well be personal preference.
Team Sharing [ReSharper++
]
Anytime you change an option in ReSharper, you can save the setting to your local computer, to a personal project-specific config file, or to a team-shared config file (to check into source control). This is quite important for enforcing team style guide policies and would allow changes to team settings to be code reviewed just like any other code change. CodeRush’s support for this kind of thing seems much less fleshed out. (see here)
Test Runner
Both products have a unit test runner, but I did not compare them since implementing TDD is sadly not in our near-term backlog.
CodeRush Toolbar Toggles [CodeRush++
]
I do like the fact that CodeRush gives quick toggles in the toolbar for enabling/disabling some common and unique options such as:
- CodeMetrics: Sugar that I have not seen in ReSharper, not sure they provide a ton of real value, though
- Member Icons: Sugar for spotting member types, particularly handy when the code is completely folded
Performance (& Roslyn) [CodeRush++
]
CodeRush has migrated to hook into Roslyn for its static analysis. ReSharper, on the other hand, continues to use its proprietary modeling to do so. Therefore, ReSharper tends to feel a bit heavier and perform a bit slower.
Disabling [ReSharper++
]
ReSharper adds a pane in the Visual Studio options that allows you to suspend/disable it on the fly. CodeRush can be disabled similarly via the Visual Studio Extensions and Updates modal but requires a restart of Visual Studio which is inconvenient.
Community [ReSharper++
]
- Stack Overflow Questions: ReSharper (~4,200) vs. CodeRush (~100)
- Google Trends: ReSharper > CodeRush
- In my professional circle, I have only ever met developers that use ReSharper.
- JetBrains sponsored GiveCamp Memphis a couple of weeks ago and gave out some free licenses to volunteer participants (including yours truly).
Core Business Alignment [ReSharper++
]
JetBrains has a proven track record in the IDE tooling space. Their core business is built on a popular portfolio of IDEs and plugins for IDEs. DevExpress, on the other hand, is known for its UI controls.
Pricing & Licensing (Business)
The base product rates at the time of writing are as follows.
Year 1 | Year 2 | Year 3+ | |
---|---|---|---|
CodeRush Ultimate | $249.99 | $249.99 | $249.99 |
CodeRush Roslyn | $49.99 | $49.99 | $49.99 |
ReSharper Ultimate | $399.00 | $319.00 | $239.00 |
ReSharper | $299.00 | $239.00 | $179.00 |
CodeRush Ultimate is CodeRush Roslyn with technical support. Though my CodeRush trial was unfairly short, having access to technical support for at least a subset of licenses seems like it would be worth having. CodeRush supports volume discounts for 2-5 licenses: 10%, 6-10 licenses: 15%, 10+ licenses: call for custom quote.
ReSharper Ultimate is ReSharper with C++, dotTrace (performance profiler), dotMemory (memory profiler), and dotCover (unit test runner and code coverage tool). ReSharper supports a licensing server model providing flexible, floating licenses for teams that change frequently or where a developer only needs access to a shared license intermittently.
Conclusion
I vote for ReSharper.
Disclaimer: Opinions expressed are solely my own and do not express the views or opinions of my employer.
The ReSharper prices you quote are for business licenses. For individual licenses it’s $149/129 for the first year, dropping to $89/77 by the third year.
Good point. The article was written evaluating for business use. Just added a comment to the subheading that the pricing is for business. Thanks.
Having used CodeRush and Resharper, I believe they are very similar. I would recommend CodeRush over Resharper for two main reasons:
1) DevExpress is always putting out videos and other media to help you leverage CodeRush. I have not seen much from the Resharper team.
2) I prefer the different was to create code templates/expansions.
By the way, more questions on StackOverflow is not always a good statistic. It may be a better indication that the product lacks documentation or the company is slow to respond to support. It could be worse in that the product is not as intuitive.
Thanks. Great points.
How about stability on large solutions. Our solution which is slowly being improved reduced is 60000 classes and 120 projects. Resharper regularly crashes visual studio in this solution. Does anybody have a large solution, many projects, many classes with coderush? How does it perform?
oof. 120 projects? I’d be surprised if base Visual Studio can handle that super well. I know they’ve improved it in recent releases.
But, yeah, ReSharper can be heavy, and I’m sure would really bog down a massive solution like that.
I cannot speak to Resharper but have been using code rush for about seven years now and can tell you that I’ve never experienced any crashes with this extension, both before and after the move to Roslyn. Code rush classic was VERY slow at times, to the point where I would disable it at times because the overhead became unbearable. Since they’ve moved to Roslyn the extension works great now and doesn’t seem to get in my way. Classic did offer some features that seem to be missing (like the debug visualizer) but I’ve lived without them for now. Perhaps I just need to toy with settings but lately I’ve been too busy to poke about.
We maintain ~30 solutions, half of which use anywhere from 8-20 projects depending on which shared resources are needed. Visual studio certainly does not enjoy loading all these projects but I haven’t run the Roslyn version of code rush without it since I don’t feel any performance hits anymore.
I am running on a very old PC (Dell T7400) and am anxiously awaiting a MUCH needed upgrade to this century so I can put this old box in a museum. Every so often launching a new instance of visual studio alerts me that the Code Rush extension took an additional few seconds to load and recommends I disable it, which I never do since this is the only place that this seems to have impact. On my home PC which has very good hardware I’ve never seen this warning so once I get an upgrade in the office things will be much better all around.
My colleague here uses Resharper instead and swears by it. I recommend toying with both and see what you like. Trying alternate products is hard because we already have so much bias towards something we’re already productive using. I myself haven’t spent more than a few minutes with Resharper and anytime I do it just gets in the way ONLY because I haven’t used it enough to get over that hurdle to see what it offers.
My profile is the reverse of yours, i.e., I’m a longtime CodeRush user but have used Resharper now and then including at my current contracting gig. So I miss CodeRush. Possibly with more familiarity I wouldn’t notice the difference so much.
The impression I had a few years ago was that Resharper was stronger on code analysis and CodeRush was stronger on Refactoring. I don’t know whether that’s still the case now.
DevExpress support is very good. I once submitted a bug in the morning and got a fix in the afternoon with a build I could try if I wanted to, although I just waited for the next regular release.
I also made a feature suggestion for their rich comments feature that was implemented surprisingly quickly!
Thanks for that feedback!
DevExpress support is extremely good. I’ve used it countless times over the years for some of their UI components. You can certainly ask them for assistance in how to do something, but more importantly they work with you to reproduce and fix bugs in their components.
Best part is there are linked provided to request a hotfix and the next build it sent right to you, no having to convince someone to go out of their way to do so.
That said, the windows forms components have been, in my experience, extremely buggy and do require that to go out of your way to test them anytime you upgrade to see WHAT broke, not IF something broke. We’re running a year and a half behind because anytime I find time to upgrade I always find serious bugs which result in ticket submissions. They always do fix them and provide hotfixes but I shouldn’t have to do this with every release. IMHO, the winforms components are unstable, but I’ve never had this issue with Code Rush.
I prepare try coderush, because resharper is slow and cause vs no-response on start/stop debug(after uninstall recharper, then faster faster and faster). I hope coderush would be better.