CodeRush for Roslyn (preview)

So the entire team has been working hard on CodeRush for Roslyn. This endeavor is huge: Hundreds, if not thousands of language-based features, replacing our core engine with Roslyn’s core engine, and porting tens of thousands of test cases.

Based on what we’ve seen so far, the end results, extremely efficient use of memory, even faster performance, and more, appear to justify the effort.

The Plan

The DevExpress 15.1 release includes two CodeRush products:

  1. CodeRush Classic 15.1 (previously known as simply CodeRush). This is the same CodeRush we’ve shipped for years. It includes the full feature set, however 15.1 will not include support for C# 6 and VB 14 language features.
  2. CodeRush for Roslyn (CRR) 1.0 preview. CRR will not include the full CodeRush 14.2 feature set (more details below), however it will include full support for C# 6 and VB 14 language features (and beyond).

The Future of CodeRush Classic

At some point in the future, when we have ported the entire CodeRush Classic feature set to CRR, we intend to deprecate CodeRush Classic. We will continue to support and fix issues in CodeRush Classic for some time beyond this deprecation point, however CodeRush Classic is unlikely to ever get support for new language features (e.g., C# 6, VB 14, and beyond).

Which CodeRush Should I Use?

If you’re working in Visual Studio 2015 with the new language features in C# or VB, you should install CodeRush for Roslyn. If you rely on CodeRush Classic features that haven’t been ported yet, you’ll need CodeRush Classic. If you need both, you can install and use both (more on this in later posts).

Benefits

There are three significant benefits you can expect from CodeRush for Roslyn:

Massive Reduction in Memory Consumption

Refactoring tools need to understand the code. And to refactor and find references quickly, you need to parse the solution source. And that means memory. The bigger the solution, the more memory you need. In CodeRush Classic and in competing tools which have decided not to support Roslyn, the memory required is essentially doubled as the Visual Studio host is also parsing and storing similar results. Owners of huge solutions were hit hard when using tools like CodeRush Classic. With CodeRush for Roslyn, this doubling-up memory waste is a now thing of the past.

To see this savings in action, we created two benchmarks using the following hardware and software:

Machine: Intel® Core™ i7-363QM CPU, 2.40 GHz, 8GB RAM, SSD HD 
OS: Windows 8.1 Enterprise 64-bit
Software:

  • Visual Studio v14.0.22823.1 D14REL
  • CodeRush for Roslyn v0.9
  • Competing Product v9.1

Solutions Tested:

Benchmarks:

  1. Memory.

    Prep: Open solution. Build. Close all documents. Only Solution Explorer and Properties windows are active. Close solution. Close Visual Studio.

    Memory Test: Start Visual Studio, open solution, wait until devenv.exe process CPU usage falls to 0. Calculate managed memory using VSIX plug-in.

  2. Performance.

    Prep: Open Visual Studio with Start Page opened. Wait until all extensions are successfully loaded.

    Performance Test: Click the solution link the solution in the Recent tab and start the timer. Stop the timer when the solution loading progress bar is complete. For VS and CodeRush the progress bar appears in the Solution Explorer. Competing products may place a progress bar in the lower-left corner of the VS status bar.

At DevExpress we have a policy of not mentioning competing products on our site, so I can’t reveal the name of the product we compared CodeRush to. However I can tell you the version number of the competing product we tested was 9.1, and I can tell you the competing product is one that has previously announced they would not exploit the Roslyn engine (which means you would expect their memory usage to be noticeably higher than Visual Studio’s).

Results of the memory tests:

MemoryUse

For the small solution, DotNetOpenAuth, CodeRush uses only 6MB.

For the medium-sized solution, Orchard, CodeRush uses 13MB.

And for the large solution, opening the source code to Roslyn itself, CodeRush uses 55MB.

Faster Performance

Not only was CodeRush Classic storing essentially the same results as Visual Studio was, it was also parsing the same code a second time (just like some competing tools still do). That waste stops with CodeRush for Roslyn. Every feature works noticeably faster and feels snappier, while CRR adds only 0-2 seconds to solution-open times:

 SolutionOpenTimes

Better Language Support

Expect CodeRush for Roslyn to immediately understand and support new C# and VB language features as they are released by the Visual Studio team.

Support for Languages Beyond C# and VB

CodeRush for Roslyn will include parsers and code generators from the CodeRush Classic engine for any languages that Roslyn doesn’t support yet, including XAML, CSS, HTML, and XML. As Roslyn adds support for these languages, We’ll update CRR accordingly to exploit the new support, which should result in additional memory reduction and faster performance.

What’s really exciting, is that as the Visual Studio team and third parties move new languages under the Roslyn engine, you can expect CodeRush for Roslyn to understand those as well. There may be some changes required on our side to support the new languages, however the effort is a small fraction of what it was before Roslyn.

The Preview is Free

Today we’re releasing an early preview of CodeRush for Roslyn on the Visual Studio Gallery. We intend to release updates every four weeks as we approach the final release. The install is VSIX-based, which means updates are quick and easy and can happen from inside Visual Studio.

What’s New

In addition to a port of CodeRush classic features (see below for details), CodeRush for Roslyn also includes two new features.

IntelliRush Hierarchical Filtering

In this release IntelliRush gets a great new feature, Hierarchical Filtering. This lets you slice up the Intellisense hierarchy to only see entries from specified classes in the ancestry.

IntelliRushHierarchicalMenu

 

Code Coverage

The Code Coverage window shows which lines of code are covered by test cases and which are not.

 image

Features Ported from CodeRush Classic

Features included in the CodeRush for Roslyn (preview):

 image

 image

We Need Your Feedback

Let us know what you love, what you’re missing, and what you’d like changed. When CodeRush for Roslyn is published (awaiting final approval from the powers that be), it will be available here.

24 comment(s)

Where can we download and install the preview version?

10 June, 2015
10 June, 2015

What about F#

I created lots of templates.

It would be nice to have at least ability to use templates in CodeRush for Roslyn within F#

10 June, 2015

Hi Andrii,

We expect to have support for templates for F# and other languages in the 1.04 update. The following work-around may help:

1. Export your F# templates from CodeRush Classic.

2. In CodeRush for Roslyn, on the Templates page, change the language to Neutral and then import your F# template file.

Contact support@devexpress.com for more assistance if you need it.

12 June, 2015

Is there a foreseeable date / month that CRR will contain all features from CR Classic?

12 June, 2015

Hi Daniel,

End of this year. At that time I expect CRR will have essentially achieved feature parity with CRC.

12 June, 2015

That is excellent, Mark!

Will F# templates have F# language support or just ability to execute them in F# projects like in classic CodeRush?

14 June, 2015

Could you also fix inconsistency with template file naming:

templates.CSharp.xml

templates.F#.xml

Looks stupid

15 June, 2015

Hi Andrii,

F# templates are not expected to have F# language support in the next release. However, if you want to add support for simple contexts which can improve the intelligence/availability of your templates, that may be possible/easy to do with a plug-in.

The template naming inconsistency is expected to be fixed in the next release.

19 June, 2015

Just installed 1.0.3.0, and I'm not sure how to start a refactoring. I'm assuming from the above that refactoring is available, and I'm probably being dense, but I can't see how to use it :-(

10 July, 2015

Yes, I am being dense, please ignore me (it's Ctrl+. for anyone else who missed it). Could be that that's the default for normal coderush, but I have it configured to Ctrl+'

10 July, 2015

Is there support for mstest unit tests including coverage?

24 July, 2015

Hi Dave,

Support for MS Test is expected in the next update.

24 July, 2015

It would be very interesting to see, in the benchmarks, how CodeRush Classic performs compared to the others.

26 July, 2015

Hi Mark,

Have you considered to introduce live-coding functionality ?

Cheers,

27 July, 2015

Hi,

Getting increasingly frustrated by excessive memory usage by "a competitor" (typically 700-900MB on top of VS footprint).

My first impressions are very good. I'm primarily interested in the test runner if I'm honest but will take a look at the other features.

Please do keep it lean and mean as you add new features.

31 July, 2015

Hi Mark,

When will the format and navigation features be implemented in CodeRush for Roslyn ?

Thanks,

2 August, 2015

Hi Yetao,

Yes, both format and navigation features are expected to be fully ported.

6 August, 2015

Hi Mark,

When will you port QuickNav and Code Analysis into CodeRush for Roslyn ?

Is there any roadmap ?

Many thanks.

17 August, 2015

Hi Yetao,

We do not have an estimate yet on when QuickNav and Code Analysis features will be ported to CRR. Our next update will focus on bug fixes. After open bug counts have dropped to zero, we'll resume work on porting features.

There is no official roadmap, however the features in CodeRush Classic should serve as an estimate of the final destination.

18 August, 2015

Hi Mark,

Has QuickNav been implemented into CodeRush for Roslyn yet ?

I cannot find a shortcut or command for QuickNav.

Cheers,

23 September, 2015

Hi Yetao,

We have finished porting QuickNav and QuickFileNav to CodeRush for Roslyn. This functionality will be available in the forthcoming v1.0.7 update.

30 November, 2015

Hi, how about Code Analysis? I really loved the editor right panel (next to right scrollbar).

23 October, 2017

Hi Jan,

Thanks for your feedback.

Currently, we do not have the editor margin bar for code analysis. However, we do have a code issue analysis tool window that can run analysis for the active document, project, or solution.

Also, it is possible to configure the Visual Studio scroll bar to display code issues on the vertical scroll bar in the code editor. To enable it, right click the scroll bar, then select Scroll Bar Options... and then enable "Use map mode for vertical scroll bar"

We do have several requests for this feature in CodeRush and we will consider adding it in a future version of the product.

23 October, 2017

Please login or register to post comments.