What's New in v23.2.6

Resolved Issues

  • T1221613 - CodeRush constantly uses the microphone
  • T1221251 - Voice Dictation - Spaces get inserted in a new name when inline rename UI is used
  • T1216043 - Code Declare - NullReferenceException is thrown in specific scenarios
  • T1216943 - Code Issues - CRXPF0013 is falsely reported when the "this" keyword is used

What's New in v23.2.5

Voice Support - CTP

After you specify Azure Speech Recognition and OpenAI API keys, you can enable voice features in Visual Studio 2022.

Voice setup instructions

Voice Commands

Hold left Ctrl key and speak to trigger voice commands. Examples of things you can say and what they do:

  • "open foo" - opens Foo.cs file in editor
  • "class bar" - navigates to classes named "bar"
  • "bookmark storage" - creates a new bookmark named "storage"
  • "goto storage" - jumps to a bookmark named "storage"
  • "show me solution explorer" - shows the Solution Explorer

Voice commands can use inferred intent, so you don't have to be precise when invoking them. Also, if you're working in large solutions (e.g., with 10,000+ files) the Voice Command for opening files is a huge productivity boost.

Voice to Code

Hold right Ctrl and speak to dictate strings, comments, expressions, and name identifiers. Examples of what you can create with voice:

Resolved Issues

  • T1218353 - Rich Comments - Images cannot be pasted in VS 2022
  • T1218711 - References Window - Double-click on a reference window opens the designer file instead of navigating to code

What's New in v23.2.4

Navigation

New quick navigation providers:

  • MEF Imports - find where the active type is imported.
  • MEF Exports - find where the active type is exported.

Improved Visual Studio 17.9 support

We patched a number of CodeRush features to work correctly with the recent Visual Studio 17.9 release.

Resolved Issues

  • T1204697 - Reverse Conditional - incorrect refactoring result occurs when nullables are involved
  • T1210145 - Spell Checker - Spell Checker does not work in VS 2022 when the 'Run code analysis in separate process' option is enabled

What's New in v23.2.3

Templates

Dynamic Numbers

In this release, we’ve added support for dynamic numbers inside templates. This means that a template can consist of letters and any number, and that number can be part of the code generated by that template. This change expands the power of existing templates and simplifies CodeRush options.

This impacts templates that work with primitives (e.g., “s” for Set/Is Set and “r” for Return).

So for example, if you want to return 99.9 from a method, you can expand the “r99.9” template.

Or if you want set a variable that’s on the clipboard to -3 (or test that variable to see if it is equal to -3 in an expression), you can expand the “s-3” template. For more information on the “s” template, see the “S” for SET video:

 

Support for Concurrent .NET Types

We have added type shortcuts for a number of Concurrent .NET types:

  • cq - ConcurrentQueue
  • cs - ConcurrentStack
  • cb - ConcurrentBag
  • cd - ConcurrentDictionary

These type shortcuts work with all the templates expecting a type. So for example, if you want to declare a property that is a ConcurrentBag of strings, you could use "pcb.s". If you want to declare a method that returns a ConcurrentQueue of a class name that has been copied to the clipboard, use "mcq.". To learn more about CodeRush Templates, see the following videos:

 

 

 

Better Support for Task and Task<T>

  • The "t" mnemonic now represents the Task type (e.g., "mt" for a method returning Task, "tt" for a type reference to "Task", etc).
  • The "t.?Type?" mnemonic is for generic Task<T> (e.g., "mt.s" for methods returning a Task<string>, "tt.b" for type reference to Task<bool>, etc.).

Navigation

New quick navigation providers:

  • Calls - finds all places where the active method (or active method call) is invoked, ignoring declarations and overrides
  • Reads - finds all read references to the active variable or property
  • Exports - finds all places where starting type is exported as a MEF contract
  • Imports - navigates directly to the type declaration of the active variable or property, or to the declaration of the active method’s return type

Resolved Issues

  • T1196037 - Selection is expanded too wide for methods with xml doc comments within region directives
  • T1201505 - Code Cleanup - Unpaired #endregion directive is added at the end of the file causing compilation error
  • T1201058 - Code Issues - False positive when reporting CRXPF0005 for editors referenced as a TargetType in a style
  • T1201487 - Code Issues - False positive when reporting CRXPF0011 for grid columns referenced as a TargetType in a style
  • T1202143 - Declare Property - ArgumentNullException raised in certain scenario
  • T1202581 - IntelliRush - Equals character is unnecessarily inserted inside quotes when attribute name is committed
  • T1188968 - Test Runner (and Test Window) do not show all entries for data driven tests that use collections/arrays as members

What's New in v23.1.5

Refactorings and Code Clean Up

All refactorings and code cleanup rules now correctly support nullable reference types.

Improved Visual Studio 17.8 support

We patched a number of CodeRush features to work correctly with the recent Visual Studio 17.8.0 preview release.

Resolved Issues

  • T1183824 - Jump Codes stops working when there is large collapsed code on the screen
  • T1186212 - Settings saved to the Personal Options Layer are not applied after Visual Studio restart
  • T1188442 - Code Clean Up - "Remove unnecessary cast" rule introduces a compilation error
  • T1183048 - Output Window - CodeRush adds a duplicated 'Build' window pane

What's New in v23.1.4

Refactorings

Inline Method and Inline Lambda refactorings now support additional scenarios, including inlining of local functions.

Navigation

References tool window results are now sorted, and the node representing where the user started searching is now pre-selected after a search, making it easier to understand the results and find related references.

Build Output Highlighting

Timestamps are now colorized.

Improved Visual Studio 17.7 support

We patched a number of CodeRush features to work correctly with the recent Visual Studio 17.7.0 release.

Resolved Issues

  • T1170007 - Settings on the Organize Members option page are not saved correctly
  • T1180715 - Build Output Highlighting does not correctly color output messages generated by setup projects (msi)
  • T1183134 - Code CleanUp - An exception occurs on applying the 'Convert to string interpolation' rule
  • T1170518 - Code Cleanup -> 'Remove redundant type cast' rule does not work for numeric constants
  • T1173240 - Simplify Expression refactoring breaks code
  • T1180157 - Inline Lambda refactoring breaks code
  • T1161896 - Convert to Ternary Expression refactoring introduces changes in code behavior

What's New in v23.1.3

Visual Studio ARM Support

CodeRush can now be installed into Visual Studio ARM. ARM support is in beta in this release.

Code Analysis

Spell Checker Improvements

Custom spell checker dictionaries stored in the solution-level layer can now be shared among all team members working on that solution (even if their solution root folders are different).

Navigation

Jump Codes

We've released Jump Codes, a new navigation feature for CodeRush that helps you move to any code (in any programming language) that you can see onscreen in just a few keystrokes. Jump Codes can also select code with fewer keystrokes.

Here's how it works:

1. Look (inside any visible code window) where you would like to be.
2. Press Caps+Tab to bring up the UI (enable the Caps as a Modifier if needed).
3. Enter the jump code shown at the target location.
4. Press Enter to land the caret on the target.

Simple enough.

Caps + Tab to invoke, Enter to land the caret (and a jump code in between).

Landing Variations

You can hold down modifier keys to fine-tune your landing, selecting the target, landing on the right side or even inside subsequent parens or brackets.

 

Landing Variations - DevExpress CodeRush

Multi-monitor Support

The feature lets you jump to any visible code window (from your Visual Studio session), even across multiple monitors. Once the Jump Codes UI is active, you can press Tab to move from monitor to monitor.

 

Multi-monitor Support - DevExpress CodeRush

Highly Optimized Efficiency

Landing shortcuts are highly optimized and designed to get you get anywhere inside any code window you can see with the smallest amount of physical effort. So not only can you get anywhere using the fewest key presses, you do this with the shortest finger travel distance. That means for many target locations your fingertips will remain on the home row.

And a single letter key press on the home row is all it takes to move the caret to the beginning of most lines in view.

If you are working with a non-Qwerty keyboard layout (such as Dvorak or Colemak), you will want to select your keyboard layout on the Jump Codes options page.

 

Highly Optimized Efficiency - DevExpress CodeRush

 

There's more to this feature than just moving the caret. Read Blog Post

Resolved Issues

  • T1169509 - References tool window incorrectly classifies target-typed new() expressions as ‘read’ references
  • T1164252 - Code Cleanup - ‘Apply Namespace Declaration Style’ preferences from .editorconfig are ignored

What's New in v22.2.5

Improved Visual Studio 17.6 support

We patched a number of CodeRush features to work correctly with the Visual Studio 17.6 release.

Resolved Issues

  • T1154545 - Extract Interface - Code is incorrectly formatted after refactoring
  • T1153152 - Code Cleanup removes necessary parentheses from a modulo expression
  • T1148054 - Code Formatting - The first item in a switch expression moves every time code gets formatted
  • T1145746 - Visual Features - Editor adornments overlap with collapsed method labels

What's New in v22.2.4

Code Analysis

New Diagnostics for DevExpress WPF Components

  • Use DependencyObjectExtensions.DataContext to define bindings for generated columns - Improve performance by defining bindings in column templates using the DependencyObjectExtensions.DataContext attached property. (XAML diagnostic)

    Documentation

  • The column’s FieldName or Binding property is not defined - Specify the FieldName or Binding property to connect the column to data. To create an unbound column, set the FieldName property to a string that does not match an existing field name. (XAML diagnostic)

    Documentation

  • Columns with the specified Binding property are read-only - Set the binding’s Mode property to TwoWay to allow users to edit column values. (XAML and C# diagnostic)

    Documentation

  • Missing EndUpdate call - The BeginUpdate method call requires a subsequent EndUpdate method call. Otherwise, the control's UI will remain locked. (C# diagnostic)

  • Missing BeginUpdate and EndUpdate calls - Call the BeginUpdate and EndUpdate methods to process collection updates in batches. (C# diagnostic)

  • BeginUpdate call in a loop - Call the BeginUpdate and EndUpdate methods outside a loop to batch process collection updates. (C# diagnostic)

Camel Case Navigation and Selection

Camel Case navigation and selection features now work inside TextBoxes everywhere in Visual Studio, including the following locations:

  • Visual Studio's new Inline Rename window
  • The Solution Explorer (when renaming files)
  • The Properties windows (for text properties)
  • Search filters

Documentation

 

Camel Case Navigation and Selection now work inside TextBoxes What's New in CodeRush | DevExpress

Programming Style

You can now specify whether CodeRush should emit optional parenthesis around switch expression operands (C# 8.0+).

 

Programming Style - What's New in CodeRush | DevExpress

 

This setting is currently used by CodeRush's "Apply the 'Optional parentheses' style to explicitly specify the order of operations" code cleanup rule.

Improved Visual Studio 17.5 support

We patched a number of CodeRush features to work correctly with the Visual Studio 17.5.0 release.

Resolved Issues

  • T1148064 - Extract Interface - Visual Studio crashes when the Inline UI is used for the Rename refactoring
  • T1146599 - Code Formatting - csharp_new_line_before_open_brace setting in the editorconfig file is not taken into account
  • T1137318 - Code Cleanup adds unnecessary parentheses around expressions in a list initializer
  • T1137878 - Code Cleanup - CodeCleanupHangedException is raised when executing the Add Copyright Header rule
  • T1133546 - Coderush highlight output does not color a final message if timestamps are enabled

What's New in v22.2.3

Resolved Issues

  • T1125259 - Test Runner - xUnit 1.92 tests stop running after migrating from packages.config to PackageReference
  • T1132316 - Code Issues tool window ignores filtering when IDE starts
  • T1132307 - IntelliRush - entry from the list gets inserted when typing the closing parenthesis
  • T1128658 - Shift F12 not searching cshtml files

What's New in v22.1.6

Code Formatter

This release includes new wrapping and spacing options to format switch expressions in C# 8.0 and up.

Resolved Issues

  • T1121220 - 'Tab To Next Reference' breaks IntellAssist suggestions
  • T1122968 - Code Places - Highlight color contrast is not sufficient
  • T1121567 - Test Runner loses category grouping after running xUnit tests

What's New in v22.1.5

Resolved Issues

  • T1116532 - Code Issues - Asynchronous main method causes the "Unused type" and "Missing CancellationToken parameter" warnings
  • T1116523 - Code Issues - "Possible NullReferenceException" warning is raised in code using top-level statements
  • T1116527 - The XAF property template does not take into account the "Use expression body for accessors" setting
  • T1113502 - Code Coverage does not work in VS 2022 when MSTests are used
  • T1106986 - Code Places are shown inside the code definition tool window
  • T1116618 - DeclareProvider encountered an error and has been disabled after upgrading to vs2022 17.4 preview 2.0

What's New in v22.1.4

Resolved Issues

  • T1097106 - CodeRush v22.1.3 keeps asking for registration info under certain circumstances
  • T1099591 - CodeRush - Code Actions - The "Declare..." window gets closed unexpectedly after it's invoked from the lightbulb menu
  • T1100946 - Declare providers aren't grouped in VS 17.3 Preview 2
  • T1099288 - Organize Members - It's not possible to type the letter 's' as part of a region name on a corresponding option page
  • T1102820 - Refactoring - 'Import Missing Namespaces' doesn't work in VS 2022 17.3 Preview 2
  • T1103691 - Code Issues - The CRXAML07 error occurs when EventToCommand is used in the XAML style

What's New in v22.1.3

Optimized Debug Visualizer

The CodeRush Debug Visualizer now works steps over code faster (we optimized our communication with the Visual Studio debugging services). We also reduced the time required to render Debug Visualizer visual elements.

Code Analysis

XAML Diagnostics for DevExpress WPF Components

This release extends the CodeRush Code Analysis Engine, adding the following code diagnostics for DevExpress Control Usage:

  • Cell templates missing PART_Editor - You can set the editor's Name to 'PART_Editor' to automatically bind and configure the editor.

    Documentation

  • EditValueChanging/EditValueChanged is handled in CellTemplate - Due to the grid's virtualization mechanism, this event handler is invoked any time the user scrolls through the data. Consider handling 'CellValueChanging/CellValueChanged' (for the grid's View) instead.

    Documentation

  • Invalid EventToCommand.EventName - The EventToCommand's associated object is missing the event specified in EventName.

    Documentation

  • In-place editing is unavailable when NavigationStyle is set to Row or None - Setting the 'ColumnBase.AllowEditing' property to 'true' will have no effect if the 'DataViewBase.NavigationStyle' property is set to 'Row' or 'None'.

    Documentation

  • AutoWidth and relative column size are used together - Setting the relative (star) column size will have no effect if the 'TableView.AutoWidth/TreeListView.AutoWidth' property is set to true.

    Documentation

Resolved Issues

  • T1085527 - General - CodeRush crashes Visual Studio when Windows 11 Insider Preview Build 22598 is installed
  • T1084606 - Code Cleanup - Variables in use are removed when the 'Apply Visibility Style' and 'Remove Unused Variables' code cleanups are applied
  • T1096245 - Navigation - Code Places - Source code becomes unintentionally reordered on collapsing/expanding regions in the Code Places window in some cases
  • T1093538 - Navigation - Drop Marker Before Jump option does not work for the "Go to Implementation" action
  • T1092893 - Refactoring - The 'Move Type To File' refactoring produces uncompilable code when it is invoked in a Shared Project

What's New in v21.2.9

Code Analysis

XAML Diagnostics for DevExpress WPF Components

The Code Analysis Engine can now check XAML code for DevExpress control usage issues, helping customers follow best practices with modern code. This release includes diagnostics for the following issues and legacy practices:

  • Legacy drag-and-drop - Drag-and-Drop Managers are a legacy way to enable drag-and-drop. Set the 'DataViewBase.AllowDragDrop' property to 'true' instead.

    Documentation

  • ColumnBase.EditTemplate is used - The 'EditTemplate' property is outdated. Use 'CellEditTemplate' instead.

    Documentation

  • FieldName is equal to the Binding path - When the 'Binding' property is specified, 'FieldName' should not contain an existing property name.

    Documentation

  • Outdated windows - The 'DXWindow', 'DXRibbonWindow', and 'DXTabbedWindow' classes are outdated. Use 'ThemedWindow' instead.

    Documentation

What's New in CodeRush | DevExpress

Miscellaneous

You can now explictly set the CodeRush Color Theme so it best matches your Visual Studio Theme colors.

Options - Set Color Theme What's New in CodeRush | DevExpress

Resolved Issues

  • T1069339 - Code Places - It is impossible to set a breakpoint if the "Auto hide Code Places" option is turned on
  • T1068601 - Performance - Typing performance issue occurs when editing a source file linked to several projects
  • T1068348 - Refactoring - The 'Remove Unused Parameters' refactoring incorrectly removes 'out' parameters
  • T1080426 - Unit Testing - .runsettings file is not taken into account when running .Net Core tests
  • T1082980 - Unit Testing - The selected .runsettings file is not taken into account when running xUnit tests

What's New in v21.2.8

Resolved Issue

T1069325 - IntelliRush - IntelliSense does not work in Visual Studio 2019 after an update if IntelliRush is enabled

Breaking Change

T1070205 - The Ctrl+B shortcut has been removed from the 'Paste Replace Word' command

What's New in v21.2.7

Code Providers - Create Descendant

Continuing our port of popular features from CodeRush Classic, in this release we have added the "Create Descendant" code provider. Create Descendant creates a descendant class or record with necessary constructors and selected overrides (choose among non-overridden abstract and virtual members declared in the ancestor classes or records).

To use "Create Descendant", just place the caret in a class or record's name, reference or its declaration, press the Ctrl+. or Ctrl+~ shortcut to invoke the Code Actions menu, select Create Descendant and press Enter. In the Members to override window, select the abstract and virtual members to override and press Enter.

Here's an example of this code provider in action:

Code Providers - Create Descendant | CodeRush What's New in CodeRush | DevExpress

Resolved Issues

  • T1065604 - Code Cleanup - Code Cleanup removes a comment in a file-scoped namespace
  • T1059352 - General - The "Preview Changes" link is shown instead of the "Import Namespace" code action in the Visual Studio's Light Bulb menu
  • T1063064 - Navigation - The "Ctrl+P" shortcut (pins results to the References window) does not work
  • T1068270 - Spell Checker - The Spell Checker incorrectly highlights misspelled words when diagnostics are suppressed
  • T1056054 - Test Runner - It is impossible to run MSTest test cases from the text editor in the MustInherit class (Visual Basic)
  • T1062814 - Test Runner - The "Grouping" combobox does not show an active grouping type

What's New in v21.2.6

Code Cleanup

File-scoped Namespace Style Support for C# 10

You can now apply Visual Studio namespace declaration preferences and corresponding settings from your .editorconfig file in code cleanup. This setting specifies file-scoped or block-scoped namespace body styles for C# 10.

File-scoped Namespace Style Support for C# 10 | CodeRush, DevExpress What's New in CodeRush | DevExpress

To apply the namespace declarations style to your code during cleanup, enable the "Apply namespace declaration style" code cleanup rule on the Editor | C# | Code Cleanup options page:

File-scoped Namespace Style Support for C# 10 | CodeRush, DevExpress What's New in CodeRush | DevExpress

Resolved Issues

  • T1053939 - Feature Advisor - The 'Learning Solution' advice is shown even if Feature Advisor is disabled
  • T1051772 - Formatting - Type Arguments spacing options conflict with StyleCop
  • T1053902 - IntelliRush - The IntelliCode 'Tab-Tab' suggestion is not accepted when IntelliRush is active
  • T1060080 - Refactorings - The Modal window remains after applying the 'Move Type to Namespace'

What's New in v21.2.5

File-scoped Namespace Declaration Support for C# 10

The following refactorings can now be used in C# projects containing file-scoped namespace declarations:

  • Sync Namespace with Folder Structure
  • Move File to Folder
  • Move Type to Namespace
  • Move Type to File
  • Declare Partial Class Part
  • Declare Partial Record Part
  • Extract Interface

The screencast below shows the "Move Type to File" refactoring in action.

Move Type to File - What's New in CodeRush | DevExpress

We've also updated the CodeRush formatting engine to support the new C# 10 namespace declaration style as well as C# 10's new global using directives feature.

Sync Namespace with Folder Structure

You can now apply the "Sync Namespace with Folder Structure" action in partial classes and in a copied folder that contains at least one .cs or .vb file. The namespace in copied files will be renamed according to the new files location.

Sync Namespace with Folder Structure - What's New in CodeRush | DevExpress

Records and Record Structs Support

CodeRush now supports records (for C# 9) and record structs (for C# 10) in the following features:

Code Cleanup

You can apply the following code cleanup rules:

  • Remove Unused Types

    Code Cleanup - Remove Unused Types - What's New in CodeRush | DevExpress

  • Apply Visibility Style

    Code Cleanup - Apply Visibility Style - What's New in CodeRush | DevExpress

  • Sort Modifiers

    Code Cleanup - Sort Modifiers - What's New in CodeRush | DevExpress

Smart Constructor

The Smart Constructor feature now works with positional records:

Smart Constructor - What's New in CodeRush | DevExpress

Diagnostics

The Code Issues window can display the "Unused Type" and "Unused Member" code analysis diagnostics for unused records and record structs:

Diagnostics - What's New in CodeRush | DevExpress

Caps as a Shortcut Modifier

You can now use the Caps Lock key as a shortcut modifier (just like Ctrl, Shift, or Alt) to create shortcut bindings for your favorite CodeRush commands and quickly access a wide range of CodeRush functionality (refactorings, navigation, declarations, and more).

This feature also lowers the risk of unintentionally engaging Caps Lock - an accidental tap of the key no longer toggles the Caps Lock state in Visual Studio. If you ever do need to toggle Caps Lock on (or off), just quickly tap the Caps key twice.

To enable Caps Lock as a modifier: run the Setup Wizard and check the Enable Caps as a Modifier checkbox on the Caps as a Modifier setup page...

Caps as a Shortcut Modifier - What's New in CodeRush | DevExpress

or activate the "Caps as a Modifier" option on the Quick Setup options page.

Caps as a Shortcut Modifier - What's New in CodeRush | DevExpress

Once you enable "Caps as a Modifier", you can quckly access a number of features that make development faster and easier. For example, you can use Caps+Space to compress to or expand from Implicit/Explicit Declarations, Expression Bodies, Ternary Expressions, Null Coalescing Operations, and Initializers. You can even use Caps+Space to Inline Temporary Variables. The screencast below shows how to toggle with Caps+Space to make explicit variable declarations implicit:

Caps as a Shortcut Modifier - What's New in CodeRush | DevExpress

To quickly declare a classes, members, and locals, just press Caps+ the First Letter of the desired element to create. For example, press the Caps key along with the letter F to declare a field variable initialized to this parameter.

Caps as a Shortcut Modifier - What's New in CodeRush | DevExpress

Similarly, Caps+P declares properties, Caps+M declares methods, and Caps+L declares locals (based on an expression entered on a line). Caps+C will declare a class, and Caps+Q will declare constants (consistent with using "q" to create constants in CodeRush templates).

To learn more about these, see the Caps as a Shortcut Modifier blog post.

The new Caps Lock shortcuts for refactorings and code providers use an enhanced "ExecuteRefactoring" command, which allows you to specify multiple refactorings and code providers (that you want to all bind to a single shortcut), listed in the key binding's Parameters textbox. If you want to take a peek, you can see the mechanics of what we've done on the IDE | Shortcuts options page.

Caps as a Shortcut Modifier - What's New in CodeRush | DevExpress

Smart Navigation (SmartNav)

The new SmartNav feature allows you to quickly navigate between adjacent members, statements, and arguments in C#, Visual Basic, and TypeScript/JavaScript, and also between controls and properties in XAML and XML. To use SmartNav, first enable the "Caps Lock as a Modifier" feature (see the section above), and use Caps + the Arrow keys.

In the screencast below, we're quickly changing the visibility of several methods by first navigating through them with Caps+Down, and then cycling visibility with Alt+Up and Alt+Down.

Smart Navigation - What's New in CodeRush | DevExpress

If you add the Shift key to any of these shortcuts (for example, Caps+Shift+Down) you can introduce a smart selection at the landing site. This can be useful for both viewing and changing values for matching properties in XAML.

Smart Navigation - What's New in CodeRush | DevExpress

Note that pressing the Shift key optional after you have created the first selection. If you are using SmartNav and you already have a selection, SmartNav will try to preserve it in the move (so only Caps+arrow key would be needed after a selection was first created with Caps+Shift+arrow key).

The Learning CodeRush Solution

This release introduces the "Learning CodeRush Solution" containing interactive lessons to help you learn Caps Lock shortcuts and help you practice new CodeRush features. To open this solution, select the CodeRush | Support | Open Learning CodeRush Solution… menu item or click the big Open Learning CodeRush Solution button on the last page of the Setup Wizard.

Learning CodeRush Solution - What's New in CodeRush | DevExpress

The Learning CodeRush Solution is just a small sample of what it could be. If you like this, and you'd like to see us invest more in interactive code-based learning to help you get up to speed faster in CodeRush, definitely let us know (DevExpress Support Center).

New Shortcut Cheat Sheet

Following the introduction of Caps as a Modifier and SmartNav, we have updated our CodeRush Shortcut Cheat Sheet.

New Shortcut Cheat Sheet - What's New in CodeRush | DevExpress

You can get version 4 of the CodeRush Shortcut Cheat Sheet here.

Resolved Issues

  • T1046708 - Formatting - Classes are incorrectly indented when the C# 10 File Scoped Namespaces feature is used
  • T1046716 - Formatting - Incorrect formatting when the C# 10 Global Using Directive feature is used
  • T1043480 - Formatting - The 'Wrap if long or multiline' option incorrectly works in the 'Type Parameters' rule
  • T1047439 - General - A memory leak occurs when using Jump to Symbol
  • T1043539 - Options - Checkbox text is not visible on the Editor/C#/Programming Style options page
  • T1051902 - Options - The template editor's font size is too small if there are no open files
  • T1043856 - Options - The Training window creates empty items after default colors are changed
  • T1051922 - Refactorings - "Break Apart Arguments" inserts unnecessary lines and makes code uncompilable
  • T1051884 - Refactorings - "Extract Interface" creates a sealed interface for a sealed class
  • T1042373 - Static Code Analysis - The 'Name does not correspond to Naming Conventions' (CRR1000) analyzer does not work
  • T1045955 - Test Runner - A performance issue occurs when updating tests
  • T1051916 - Test Runner - Performance issues occur when the layout is switched to flat mode and not all tests are collected
  • T1046414 - Test Runner - Test Runner crashes if .NET 6 tests run on multi-targeting project layouts

What's New in v21.2.4

Visual Studio 2022 Support

CodeRush now installs and runs in Visual Studio 2022.

You can use one of the following methods to install CodeRush in Visual Studio 2022:

Resolved Issues

  • T1042626 - Performance - Debug Visualizer causes slowdowns when the availability of the "Step Into Member" toolbar action is checked
  • T1040797 - Refactorings - "Remove Unused Parameter" does not update references outside the Visual Basic source file
  • T1040388 - Show Color - Visual Studio crashes when named colors are used with an alpha channel

What's New in v21.2.3

Code Places - Reorder Members with Drag & Drop

The File Places tab of the Code Places window now supports drag & drop so you can quickly reorder members for the opened file. To change a member's position, simply drag that member and drop it where you need it.

Code Places - Reorder Members with Drag and Drop | CodeRush What's New in CodeRush | DevExpress

Resolved Issues

T1035699 - Code Cleanup - Code Cleanup is not applied if the "Apply on Save" option is enabled

T1035731 - Code View - "Structural Highlighting" does not support namespace prefixed tag names from the XHTML standard

T1032757 - Formatting - An XML document comment is incorrectly indented if a member is wrapped in directives

T1037257 - Navigation - "Jump to Symbol" does not work in Visual Studio 2022 17.0 Preview 5

T1038450 - Performance - The "CodeRush is slow typing" hint is shown when using the Naming Assistant

T1035418 - Refactoring - "Move All Types to Files" does not move classes marked with the Serializable attribute

T1038450 - Performance - The "CodeRush is slow typing" hint is shown when using the Naming Assistant

What's New in v21.1.8

Refactorings - Move File to Folder

The "Move File to Folder" refactoring gets a port from CodeRush Classic. This refactoring moves a file to a folder matching the current namespace. If a corresponding folder does not exist in the solution, this refactoring will create one.

Here's an example of this refactoring in action:

Move File to Folder Refactoring - What's New in CodeRush | DevExpress

Unit Test Runner

The Unit Test Runner now displays expected and actual test run results with white space and line breaks in a tabular format for .NET Core projects.

Unit Test Runner - What's New in CodeRush | DevExpress

Resolved Issues

  • T1030015 - Code Declaration - The "Declare Local" provider doubles comments
  • T1028542 - Code Declaration - The "Declare Property" provider fails to add a setter
  • T1030997 - Code Places - The "Code Places" feature should not show items for anonymous functions inside a member of the TypeScript class
  • T1030561 - Debug Visualizer - Multiline statements are highlighted incorrectly
  • T1029687 - Declare Menu - The "Missing Members" declare provider incorrectly shows nested types in the menu
  • T1025812 - Navigation - "Jump to Symbol" does not show all symbols when the filter is applied
  • T1029560 - Navigation - "Tab to Next Reference" does not work in Visual Studio 2019
  • T1029777 - Organize Members - The Organize Members engine can't detect the event handler if its subscription is in an another file
  • T1029688 - Refactorings - "Extract Interfaсe" sets incorrect visibility for a generated interface
  • T1034251 - Refactorings - "Make Implicit" produces a compilation error for the Expression.Or and Expression.And methods
  • T1029279 - Refactorings - "Promote to Generic Parameter" is not available in some scenarios
  • T1025703 - Show Color - "Show Color" does not work in XAML for Xamarin projects
  • T1034247 - Smart Constructor - Smart Constructor does not take into account initialized fields
  • T1026526 - Test Runner - Found nodes are not expanded after the search is finished

What's New in v21.1.7

Refactorings - Move All Types to Files

With the new "Move All Types to Files" refactoring, you can quickly move all types (or only selected types) contained in one file into new separate files (one file per type). Each file will have the same name as the type it contains.

What's New in CodeRush | DevExpress

 

You can also run this refactoring from the Solution Explorer targeting a selected project, folder, or folders containing source files with multiple types inside. Simply right-click the project, folder, or folders and select "Move All Types to Separate Files".

What's New in CodeRush | DevExpress

 

If you want to apply the "Move All Types to Files" refactoring during code cleanup, enable the corresponding options for the Move types to separate files rule on the Editor | C# (Visual Basic) | Code Cleanup options page.

What's New in CodeRush | DevExpress

 

You can configure the "Move All Types to Files" refactoring on the Editor | All Languages | Code Actions | Move All Types to Files options page.

What's New in CodeRush | DevExpress

Resolved Issues

  • T1027851 - Formatting - Code becomes commented when processing single line comments inside object initializers and LINQ expressions
  • T1021592 - Formatting - Comments in the array initializer break code after formatting
  • T1021620 - Navigation - "Tab to Next Reference" conflicts with IntelliCode in Visual Studio 2022
  • T1027852 - Refactorings - The "ForEach to Linq" refactoring should not be available if the await expression is used in the foreach cycle context
  • T1024854 - Settings - The "Jump to File" dialog jumps around a screen with the scale factor greater than 100%

What's New in v21.1.6

Visual Studio 2022 Preview Support

CodeRush now installs and runs in the Visual Studio 2022 Preview.

You can use one of the following ways to add the CodeRush extension to Visual Studio 2022 Preview:

  • Visual Studio Marketplace
    Download the CodeRush for VS 2022 extension from the Visual Studio Manage Extensions window and run the VSIX installer to install CodeRush.

  • Download Manager
    If you already have a CodeRush subscription, you can download a registered version from DevExpress Download Manager and install it using the .exe installer.

Performance Enhancements

We have significantly improved performance for the following features:

  • Code Coverage. The Code Coverage window now loads faster when it runs the first time. We've also decreased member graph build time.
  • The Debug Visualizer is now faster when stepping over, into, or out of code blocks.

JavaScript / TypeScript Support - Region Painting

Region Painting is now available in JavaScript and TypeScript.

What's New in CodeRush | DevExpress

To enable this feature, click the Region Painting button on the CodeRush Visualize toolbar.

What's New in CodeRush | DevExpress

Resolved Issues

  • T1015384 - Formatting - An attribute is indented incorrectly
  • T1020811 - Formatting - The formatting action should not remove a custom new line if the "Keep existing line breaks" option is enabled
  • T1015927 - Formatting - The formatting action incorrectly processes the "#endregion" directive and leads to a compiler error
  • T1013987 - IntelliRush inserts a redundant argument list into a method that already contains them
  • T1012132 - Navigation - "Jump to symbol" navigation performs an endless search when all files are closed
  • T1015403 - Member Icons - The "Copy" command should not keep selection after it is applied
  • T1017834 - Refactorings - "Import Missing Namespaces" does not work for multiple undeclared namespace references in a single file
  • T1014913 - Refactorings - "Sync Namespace with Folder Structure" is canceled only for the second time
  • T1020822 - The Rich Comments feature incorrectly displays inserted transparent images

What's New in v21.1.5

Performance Enhancements

This release brings the following performance enhancements to CodeRush.

Improved First-time Loading Performance

CodeRush tool windows now load faster when run the first time. We've also decreased the time required to expand code templates the first time.

Optimized Memory Use in the XAML Engine

We've reduced memory consumption in the XAML engine which used in refactorings, navigation, code analysis, and other CodeRush features for projects containing XAML files.

Test Runner

The Unit Test Runner now shows white spaces and line breaks in test run results.


Test Runner - What's New in CodeRush | DevExpress

Note: This feature is not yet supported in .NET Core projects.

Resolved Issues

  • T1013882 - Code Cleanup - The "Unused type" rule does not support records in C# 9
  • T1008699 - Formatting - The indent is calculated incorrectly in the C# 8.0 switch expression
  • T1013688 - Refactorings - "Add Parameter" does not support implicit objection creation expressions in C# 9
  • T1013883 - Refactorings - "Add Setter" is available for properties with a C# 9 init accessor
  • T1010064 - Refactorings - "Extract String to Resource" incorrectly works when extracting to an existing resource file
  • T1013689 - Refactorings - "Reorder Parameters" does not support implicit object creation expressions in C# 9
  • T1004463 - Refactorings - "Sync Namespace with Folder Structure" produces a dialog about blocking user input
  • T1005981 - Organize Members - The indent for parameters is wrongly changed

What's New in v21.1.4

Organize Members Enhancements

You can now create rules for properties with backing fields to group and sort them with the following criteria:

  • Keep backing fields with their corresponding properties.

    Organize Members - CodeRush | DevExpress What's New in CodeRush | DevExpress

  • Group properties with backing fields by visibility:

    Organize Members - CodeRush | DevExpress What's New in CodeRush | DevExpress

Test Runner

The Test Runner now can show "pretty-formatted" names for xUnit test cases in .NET Core projects. To support xUnit's method display names, CodeRush uses the xUnit's methodDisplay and methodDisplayOptions settings.

Test Runner - CodeRush | DevExpress What's New in CodeRush | DevExpress

To enable this functionality, check the "Collect tests from assemblies when opening a solution and rebuilding projects" option on the Unit Testing | Test Runner options page.

Test Runner - CodeRush | DevExpress What's New in CodeRush | DevExpress

Resolved Issues

  • T998880 - Code Places - Loading 'Favorites' items doesn't consider case sensitivity of a current language
  • T1007320 - IntelliRush - A memory leak occurs after a document is closed
  • T1003895 - Refactoring - 'Expand Ternary Expression' adds a redundant line break before a closing bracket
  • T995471 - Refactoring - 'Sync Namespace with Folder Structure' incorrectly determines the default namespace for a project
  • T1000146 - Unit Testing - It is not possible to collapse a node with a selected child node on running tests
  • T1002133 - Unit Testing - Visual Studio hangs on opening a solution that contains MSTest tests and when running these tests

What's New in v21.1.3

XAF Code Templates for C# and Visual Basic

We have added new code templates to help you quickly create popular XAF (eXpressApp Framework) controllers and actions.

For example, to create a custom ViewController class, type xcv followed by the Tab (or Space, depending on your settings) to expand it.

What's New in CodeRush | DevExpress

When the caret inside a ViewController, you can expand the xas template to create a simple action.

The following tables list code templates for creating DevExpress XAF controllers and actions:

Controllers

TemplateDescription
xcv Creates a custom ViewController.
xcw Creates a custom WindowController.
xcvod Creates a custom ObjectViewController for DetailView.
xcvol Creates a custom ObjectViewController for ListView.
xcvd Creates a custom ViewController for DetailView.
xcvl Creates a custom ViewController for ListView.

Actions

TemplateDescription
xas Creates a Simple Action (SimpleAction).
xac Creates a Single Choice Action (SingleChoiceAction).
xap Creates a Parametrized Action (ParametrizedAction).
xapw Creates a Popup Window Show Action (PopupWindowShowAction).

Resolved Issues

  • T994084 - Blazor - bUnit tests are duplicated in the Test Runner window
  • T996389 - Blazor - Smart Duplicate Line doesn't work in a code section
  • T999052 - Code Providers - The 'Equality Members' action is wrongly available in a record and generates invalid code
  • T999130 - IntelliRush - It is impossible to commit a selected item using the mouse
  • T999069 - Refactoring - 'Remove Unused Variable' produces a compilation error in Visual Basic for a variable that is initialized in the Select statement
  • T996493 - Test Runner - Test execution continues after a debugging session ends (.Net Core)
  • T999132 - Test Runner - The progress bar doesn't reset the state before running tests

What's New in v20.2.11

Performance Enhancements

Speed is important and we are always looking for ways to make CodeRush even faster. This release brings speedier test runs and coding assistance.

Coding Assistance

Typing performance has been improved for the following features:

Unit Test Runner

The Test Runner gets the following optimizations:

  • An improved test discovery engine, which allows the Test Runner to find tests faster in your solution.
  • Reduced our project dependency graph build time, improving test run speed.

Resolved Issues

  • T960440 - Performance - The initialization of painting plugins affects the startup performance
  • T989286 - Smart Duplicate Line - An unexpected '+' character is added at the beginning of duplicated code

What's New in v20.2.10

Resolved Issues

  • T984517 - Code Cleanup - An unnecessary region is inserted into a copyright header if the "Do not replace the existing copyright header during code cleanup" option is turned off
  • T987846 - Formatting - A method with an attribute is incorrectly indented
  • T991414 - Formatting - The Arguments option on the Wrapping options page does not support attributes
  • T991474 - IntelliRush - Memory leak when using IntelliSence
  • T991410 - IntelliSense does not work in Visual Studio 2017 if String Format Assistant is enabled
  • T987858 - IntelliSense is incorrectly positioned when pressing Ctrl+Space in some scenarios
  • T991463 - Organize Members - The 'Is event handler' option for grouping members doesn't work in a multi-target project
  • T991471 - Rich Comments - Typing is slow if a file contains many comments with markdown
  • T991428 - Settings - A custom layer uses an absolute path and can't be correctly stored in a repository
  • T987412 - Spell Checker - A custom dictionary with the selected culture is not supported
  • T988557 - Spell Checker doesn't work for Visual Basic
  • T991426 - Static Code Analysis - 'Possible System.NullReferenceException' false positive when the 'is not' pattern is used
  • T986086 - Static Code Analysis - The CRR0034 code diagnostics rule is shown for an application's entry-point (the 'Main' method)
  • T991424 - Static Code Analysis - 'Possible System.NullReferenceException' false positive when the null coalescing assignment operator is used
  • T989173 - Test Runner - It is impossible to copy console output data from the Test Runner's Details window
  • T987685 - Test Runner - It is impossible to debug test cases for the MSTest framework

What's New in v20.2.9

Test Runner

The Test Runner now allows you to run and debug MSTest unit tests for Universal Windows Platform (UWP) apps.

UWP Test Runner - What's New in CodeRush | DevExpress

Code Analysis

You can now include CodeRush diagnostics in Visual Studio's background analysis, so you can analyze your code out of process in Visual Studio 2019 v16.8 and later versions.

To include CodeRush code issues in Visual Studio's Error List, just check the "Register in VS" column checkboxes for the analyzers you want to run, on the Editor | C# (or Visual Basic) | Code Analysis | Code Issues Catalog options page.

What's New in CodeRush | DevExpress

Performance Enhancements

We have significantly improved performance for the following visual features:

Resolved Issues

  • T982978 - Code Formatting - Blank Lines - The "Region | Blank lines around" option is not applied if a region is the first element in a source file
  • T982905 - Code Formatting - Properties with XML documentation comments are wrongly commented after formatting
  • T986245 - Code Providers - The "Add to Interface" code provider generates redundant members in some descendant classes and produces compiler warnings
  • T986249 - Code Templates - Auto-implemented properties should use an init-only setter by default
  • T984072 - General - CodeRush is disabled after installing via .exe in Visual Studio 16.9.2
  • T986246 - Refactorings - The "Make Implicit" refactoring shouldn't be available when a variable is initialized by a target-typed conditional expression
  • T979178 - Spell Checker does not mark misspelled words in the code editor for Visual Studio 2019 v.16.9.0
  • T978672 - String Format Assistant does not work in Visual Studio 16.10.0 Preview 1
  • T969017 - Test Runner fails to run tests in the Universal Windows Test Project
  • T983128 - Test Runner - The popup hint incorrectly hides a test icon's context menu on an attempt to click a menu item

What's New in v20.2.8

Organize Members

Improved Options Page

We have redesigned the Organize Members options page to make it easier to use.

What's New in CodeRush | DevExpress

This options page gets the following enhancements:

  • The new Duplicate button copies the selected rule, adding it to the end of the list.

    What's New in CodeRush | DevExpress

  • We have added drag & drop support to the rules list. To change a rule's position, simply drag a rule and drop it where you need it.

    What's New in CodeRush | DevExpress

Blazor Support

Code Templates for DevExpress Blazor Components

We have added a number of powerful new code templates to help you quickly create many of the popular DevExpress components for Blazor.

For example, typing xdg followed by pressing Tab (or Space, depending on your settings) will create a DxDataGrid" Blazor component, with fields making it quick and easy to change important properties.

What's New in CodeRush | DevExpress

With the caret inside the DxDataGrid component, you can expand the c template to create a new data grid column.

The following tables list code templates for DevExpress Blazor components.

Button

TemplateDescription
xb Creates a Button component (DxButton)

Data Grid

TemplateDescription
xdg Creates a Data Grid component (DxDataGrid)

Once you have a DxDataGrid, you can populate it with columns and summary items.

Column Types

Expand these templates on an empty line inside the DxDataGrid (a pair of Columns tags will be created automatically, if needed).

TemplateDescription
c Creates a data column with a text editor (DxDataGridColumn).
cc Creates a command column (DxDataGridCommandColumn).
ck Creates a data column that displays disabled checkboxes (DxDataGridCheckBoxColumn).
cb Creates a data column with a combo box editor (DxDataGridComboBoxColumn).
de Creates a data column with a date edit editor (DxDataGridDateEditColumn).
sc Creates a selection column (DxDataGridSelectionColumn).
se Creates a data column with a spin editor (DxDataGridSpinEditColumn).

Summary Types

Expand these code templates on an empty line inside a DxDataGrid to create grid summaries.

TemplateDescription
gs Creates a summary item (DxDataGridSummaryItem). Use the "i" code template (see below) to add summary items.
ts Creates a total summary (TotalSummary).

UI Templates

These code templates can be expanded on an empty line inside the specified parent tags.

TemplateDescriptionParent Tag(s)
drt Creates a UI template used to display a detail row (DetailRowTemplate). DxDataGrid
dt Creates a UI display template for column cells (DisplayTemplate). DxDataGridColumn, DxDataGridComboBoxColumn, DxDataGridCheckBoxColumn, DxDataGridDateEditColumn, or DxDataGridSpinEditColumn.
eft Creates a template used to display the edit form (EditFormTemplate). DxDataGrid
et Creates a UI template used to display a column editor (EditTemplate). Expand this code template on an empty line inside a DxDataGridColumn. DxDataGridColumn
ht Creates a UI template for a Data Grid header (HeaderTemplate). DxDataGrid
rpt Creates a UI template used to display row preview sections (RowPreviewTemplate). DxDataGrid

Charts

Code templates for creating charts.

TemplateDescription
xch Creates a chart component (DxChart).
rb Creates a range bar series (DxChartRangeBarSeries). You can expand this on an empty line inside a DxChart.

Navigation and Layout Components

TemplateDescription
xcm Creates a Context Menu component (DxContextMenu). Use the "i" code template (see below) to add menu items.
fl Creates a Form Layout component (DxFormLayout). Use the "i" code template (see below) to add form layout items.
xpa Creates a Pager component (DxPager).
xpop Creates a Popup component (DxPopup).
xsl Creates a Stack Layout component (DxStackLayout). Use the "i" code template (see below) to add stack layout items.
ta Creates a Tab (DxTab) inside a Tabs component.
tp Creates a Tab with content (DxTabPage) inside a Tabs component.
xta Creates a Tabs component (DxTabs).
xtb Creates a Toolbar component (DxToolbar).
xtv Creates a TreeView component (DxTreeView). Use the "n" code template (see below) to add nodes.

Items

Use the "i" code template to intelligently add child items to parent components.

TemplateDescription
i Creates a DxContextMenuItem, DxFormLayoutItem, DxStackLayoutItem, or DxDataGridSummaryItem inside the corresponding parent component.

Nodes

Use the "n" code template to add child nodes to a tree view.

TemplateDescription
n Creates a DxTreeViewNode inside the TreeView component.

Pivot Grid

TemplateDescription
xpg Creates a pivot grid component (DxPivotGrid).
f Creates a pivot grid field (DxPivotGridField). Expand this code template on an empty line inside a DxPivotGrid to create the field.

Reports

TemplateDescription
xdv Creates a DxDocumentViewer component that is used to publish (preview, print and export) documents in Blazor applications (DxDocumentViewer).
xrd Creates a DxReportDesigner component to create an End-User Report Designer in Blazor applications (DxReportDesigner).

Scheduler

TemplateDescription
xsch Creates a calendar and scheduler component (DxScheduler).

Upload

TemplateDescription
xup Creates an Upload component (DxUpload).

Rich Comments Enhancement

You can use the "Suppress Rich Comments in these files" setting on the Editor | All Languages | Rich Comments options page to disable Rich Comments for certain file types (Rich Comments are disabled in .editorconfig files by default). Сommon wildcards ("?" and "*") are supported.

The screencast below shows how to disable Rich comments in xaml files:

What's New in CodeRush | DevExpress

Records Support

CodeRush now supports records (for C# 9) in the following features:

Performance Enhancements

We have significantly improved performance for the Rich Comments technology.

We have also fixed an edge-case performance issue with the Sync Namespace with Folder Structure refactoring.

What's New in CodeRush | DevExpress"

More detail on the fix: In earlier versions, CodeRush would first scan all files to see if there were any namespaces that didn't match the folder structure before making the Sync Namespace with Folder Structure refactoring available on the the Solution Explorer's context menu. This operation could take some time on larger projects. To improve performance, CodeRush no longer performs this check. Now the Solution Explorer's context menu appears quickly, and the Sync Namespace with Folder Structure menu item will always be available (even if all the namespaces are already synced up to the folder structure).

Resolved Issues

  • T972921 - Blazor - The "Declare Event Handler" refactoring is available when a handler already exists
  • T973249 - Code Formatting adds an unnecessary line break to attributes
  • T964076 - Performance - Smart Duplicate Selection freezes Visual Studio when it is applied in XAML code
  • T967922 - Settings - Feature Advisor is not turned off if it is enabled in other options layers
  • T971804 - Smart Constructor does not execute the constructor tool for a C# record
  • T974331 - Smart Constructor does not work for nullable reference types
  • T978289 - Smart Constructor should use programming style options of expression bodies
  • T964098 - Smart Keys - Smart Dot is not available for object creation expressions
  • T972155 - Test Runner does not add filtered failed tests from the assembly to a session
  • T978304 - Test Runner does not show all test run results when using a DataTestMethod attribute with a lot of input parameters

What's New in v20.2.7

Code Formatting

EditorConfig Support

CodeRush now uses Visual Studio's format settings defined in the EditorConfig file.

EditorConfig Support - What's New in CodeRush | DevExpress

EditorConfig settings will have a higher priority than formatting preferences set in the CodeRush Options dialog.

For example, the csharp_new_line_before_open_brace setting (shown above) overrides the Wrap open brace option set to After (for namespaces, types, methods, and simple methods) on the Editor | C# | Formatting | Braces options page (shown below).

EditorConfig Support - What's New in CodeRush | DevExpress

The screencast below shows an example of EditorConfig settings influencing the Format Document command.

What's New in CodeRush | DevExpress

Blazor Support

Declare Providers

CodeRush declaration providers are now available in .razor markup. You can use them to declare local variables, methods, parameters, fields, properties, and constants.

For example, you can apply Declare Field to create a field for the active Blazor component.

Blazor Declare Providers - What's New in CodeRush | DevExpress

Organize Members

Improved Options Page

The "Group by" section now contains an improved filter editor that simplifies group rule creation.

Organize Members - What's New in CodeRush | DevExpress

Resolved Issues

  • T950477 - Blazor - Duplicated 'Rename' items are shown in the light bulb menu
  • T959749 - Code Cleanup - The "Sort Namespace References" cleanup rule should sort namespace aliases alphabetically
  • T953611 - Code Templates - Template expansion does not work for C#9 records
  • T736487 - Formatting removes a space between the 'async' keyword and the list of lambda-expression parameters
  • T957927 - Performance - The "What's New" notification window increases loading time
  • T967230 - Performance - Typing slowdowns sometimes occur when editing large HTML documents
  • T960440 - Performance - The initialization of painting plugins affects the startup performance
  • T956349 - Shortcuts - The "Ctrl + S" shortcut used to strikethrough selected text within Rich Comments overrides the "Save document" command
  • T953614 - Typing Helpers - The "Cycle Scope Up/Down" feature does not change a member's visibility modifier for C# 9 records

What's New in v20.2.6

Resolved Issues

  • T958903 - Code Analysis - Static code analysis is running even if it is disabled and unregistered from Visual Studio in Visual Studio v16.8+
  • T958831 - Visual Studio constantly displays the 'Gathering suggestions' message on an attempt to show the 'light bulb' menu

What's New in v20.2.5

Exclude Generated Code from Analysis

CodeRush now allows you to exclude files and code regions that contain generated code from code analysis and code cleanup. Just open the Editor | All Languages | Generated Code options page and add the necessary file patterns or region titles to bypass during analysis and code cleanup.

Exclude Generated Code from Analysis - What's New in CodeRush | DevExpress

Note that this page already includes default file masks and regions typically used for generated code (see for example, the "\*.Designer.cs" file entry).

Smart Dot Enhancement

You can now quickly multi-press the dot key (".") when the caret is inside parens in a method call with parameters. CodeRush will move the dot and caret outside the closing parenthesis, allowing you to quickly access a member of the method's return value. Each additional press of the dot key will move the dot out to the right of the next closest closing parenthesis.

Smart Dot - What's New in CodeRush | DevExpress

You can also place the caret inside square brackets ("[ ]"), for example, in a list element or array element, and double press the dot. CodeRush will move the dot and caret to the right of the closing bracket.

Smart Dot - What's New in CodeRush | DevExpress

You can set the multi-press speed in the Smart Keys options page. The default value is 500 milliseconds. If two back-to-back dots are pressed within this time frame CodeRush applies the Smart Dot feature and suppresses IntelliSense. This setting lets you determine which feature to use when both Smart Dot and IntelliSense are available.

What's New in CodeRush | DevExpress

Resolved Issues

  • T952960 - General - Visual Studio freezes when build configuration is changed from Debug to DebugTest
  • T946725 - Code Cleanup should not use an implicit variable declaration for new target-typed expressions in C# 9.0
  • T951418 - Code Cleanup throws an exception for a lambda statement
  • T952539 - Feature Advisor - Shortcuts shown in notifications are not localized for different keyboards
  • T953489 - Organize Members - Event handlers are incorrectly wrapped into a region if methods already contain regions
  • T950478 - Refactorings - The "Reorder Parameters" refactoring does not support local function declarations
  • T953970 - Region Painting - Regions are drawn incorrectly when #region and #endregion directives are shifted relative to each other
  • T958087 - Smart Constructor - The parameter type is wrong for a member with a nullable reference type
  • T952032 - Spell Checker does not work in the code editor
  • T958289 - Templates - The "in" template is expanded incorrectly in HTML comments
  • T951770 - Test Runner crashes if .NET 5 tests run on multi-targeting project layouts
  • T957092 - Test Runner does not work in VS 2019 16.9.0 Preview 2.0

What's New in v20.2.4

Naming Conventions

EditorConfig Support

You can now configure naming conventions in CodeRush using the Visual Studio's naming styles options and corresponding settings in the EditorConfig file.

For example, the following EditorConfig defines a naming convention for classes and structures. This convention specifies all public classes and structs be capitalized and include a required "Name" suffix.

EditorConfig Support - CodeRush | DevExpress

After making this example change, CodeRush features such as Name Anonymous Type will use the specified naming conventions:

EditorConfig Support - CodeRush | DevExpress

Blazor Support

Declare Providers

CodeRush declaration providers are now available from @code sections in .razor files. You can use them to declare local variables, methods, parameters, fields, properties, and constants. Type is intelligently inferred from the surrounding code.

For example, you can run Declare Constant to create a constant of the corresponding type:

Declare Providers - Blazor Support, CodeRush | DevExpress

The red target picker marker allows you to choose the place where the created constant can be inserted.

You can configure which code providers use the target picker on the Editor | All Languages | Code Actions | Target Picker options page.

Target Picker Options - CodeRush | DevExpress

Resolved Issues

  • T941086 – Blazor - Event names are removed when the "Smart Duplicate Line" feature is applied
  • T949974 – Code Cleanup - The "Convert to string interpolation" rule throws an exception when the code contains a concatenation of interpolated strings
  • T949987 – Code Coverage - Node filtering does not work
  • T941407 – Debug Visualizer - Navigation from the Call Stack window is broken
  • T948582 – Formatting - Default settings of wrapping parameters conflict with the SA1116 and SA1117 StyleCop rules
  • T947961 – Formatting - The blank lines option is incorrectly processed for auto-implemented properties with the initializer
  • T949144 – General - An error is thrown when a light-bulb menu is opened in a multi-target project if the caret is placed on an undeclared identifier
  • T907131 – General - Some assemblies are not loaded from native images in Visual Studio 2017
  • T947644 – Organize Members - Properties with expression-bodied accessors are wrongly treated as auto-implemented properties
  • T946090 – Performance - A delay occurs on applying refactoring or Code Cleanup if a large number of assemblies is loaded
  • T944093 – Settings - A combo box crops text on the Organize Members options page
  • T938633 – Setup Wizard - The "Disable Markers" option is always selected on the Markers wizard page

What's New in v20.2.3

Blazor Support

Refactorings - Declare Event Handler

This release introduces the "Declare Event Handler (Razor code block)" and "Declare Event Handler (Razor code behind)" refactorings. These refactorings generate an event handler in the @code block of a .razor file and in a Razor code-behind file (razor.cs) for the selected method reference. The following screencasts show these refactorings in action:

  • Declare Event Handler (Razor code block)

    Declare Event Handler (Razor code block) - CodeRush | DevExpress

  • Declare Event Handler (Razor code behind)

    Declare Event Handler (Razor code block) - CodeRush | DevExpress

Organize Members Enhancements

You can now create rules to group members by:

  • Member type name (property/field type, method return type, etc.)
  • Member name

You can use Contains, StartsWith, and Equals string operations and RegEx expressions to group members. The screencast below shows event handler grouping:

Organize Members Enhancements - CodeRush | DevExpress

Organize Members also allows you to sort members by their type name.

Organize Members Enhancements - CodeRush | DevExpress

Navigation

Jump to Window

The Jump to window now clearly indicates entries found in the active file/type.

Jump to Window - CodeRush | DevExpress

Resolved Issues

  • T934252 – Code Providers - The "Add to Interface" provider processes the "default" value of a parameter as the "null" value

What's New in v20.1.8

Blazor Support

Extract Razor Component

This release introduces the "Extract Razor Component" code provider. This code provider allows you to extract a selected HTML markup into a new Razor component file (Component.razor). You can then reuse and share the Razor component in all your projects.

To use this code provider, just select the desired HTML markup you want to extract, invoke the Code Actions menu, and choose "Extract Razor Component". CodeRush creates the Component.razor file containing the extracted HTML markup and places this file in the Components project folder. After extraction is complete, you can modify the suggested component name.

Extract Razor Component - CodeRush | DevExpress

This code provider also adds new Blazor usings to the _Imports.razor file. If you prefer to add Blazor usings to the original .razor file you extracted from, disable the "Generate new Blazor usings in the _Imports.razor file" option on the Editor | C# | Programming Style CodeRush options page.

Extract Razor Component - Options - CodeRush | DevExpress

Note: The "Extract Razor Component" code provider is unable to extract code from the @code section and it will not extract code dependencies for HTML markup variables and events (for example, @onclick). You may need to add corresponding dependencies to the component's @code section after extraction to resolve any dependencies.

XAML Support

Element Spacing Formatting Options

We now support Visual Studio's Element Spacing formatting options. These settings allow you to control the arrangement of elements and text lines in your XAML document. You can override these settings, for example, to apply the "Place empty lines between elements in text content" option.

XAML Support - CodeRush | DevExpress

Unit Test Runner

Filtering Enhancements

The Test Runner now maintains grouping in the tests tree when filtering.

Unit Test Runner - CodeRush | DevExpress

Resolved Issues

  • T925052 – Code Cleanup - Some lines are moved to the right by one indent when Code Cleanup is executed
  • T928558 – Test Runner - Categories are wrongly recognized for MSTest .Net Core tests

What's New in v20.1.7

Code Templates

Blazor Support

New Blazor templates are here to help you create Blazor apps faster.

For example, typing bht followed by pressing Tab (or Space, depending on your settings) will create a Blazor component with an HTTP call.

Blazor Support - CodeRush | DevExpress

Components

TemplateDescription
bch Creates a child component with a parameter.
bcmp Creates a blank component.
bht Creates a component with an HTTP call.
cv Creates a <CascadingValue> component.
dav Creates a <DataAnnotationsValidator> component.
en Creates an <EditForm> component.

Input

TemplateDescription
icb Creates an <InputCheckbox> component.
idt Creates an <InputDate> component.
in Creates an <InputNumber> component.
it Creates an <InputText> component.
ita Creates an <InputTextArea> component.
isel Creates an <InputSelect> component.

Blazor Directives

TemplateDescription
ba Creates an @attribute directive.
bc Creates a Blazor @code block.
bf Creates a Blazor @functions block.
bh Creates an @inherits directive.
bj Creates an @inject directive.
bjc Creates an @inject IConfiguration configuration directive.
bjh Creates an @inject HttpClient Http directive.
bl Creates a @layout directive.
bm Creates a @model directive.
bp Creates a @page "/" directive.

Conditionals & Control Statements

TemplateDescription
do, dw Creates a @do (do/while) control statement.
fe Creates a @foreach control statement.
for, fri, frj Creates @for control statement.
if Creates an @if conditional.
ife, ifl Creates an @if @else conditional.
sw Creates a @switch conditional.
tc Creates a @try/catch block.
tcf Creates a @try/catch/finally block.
tf Creates a @try/finally block.
u Creates a @using statement.
wh, while Creates a @while control statement.

Lifecycle Methods

TemplateDescription
oar Creates an OnAfterRenderAsync override.
oar, Creates an OnAfterRender synchronous override.
oi Creates an OnInitializedAsync override.
oi, Creates an OnInitialized synchronous override.
onch Creates an OnChangeAsync override.
onch, Creates an OnChange synchronous override.
ops Creates an OnParametersSetAsync override.
ops, Creates an OnParametersSet synchronous override.
sr Creates a ShouldRender override.

Note: A comma at the end of a lifecycle method override template generates a synchronous version of the event.

HTML Support

We have also ported templates for HTML from CodeRush Classic. You can use these templates, for example, to create an HTML table:

HTML Support - CodeRush | DevExpress

For a complete list of ported templates, choose the HTML language and expand the "Raw HTML" folder on the "Editor | All Languages | Templates" options page.

CodeRush | DevExpress

Resolved Issues

  • T921366 – IntelliRush breaks auto-formatting on tag completion for XAML in Visual Studio 2019
  • T924268 – Performance – CodeRush causes typing slowdowns after opening a solution
  • T919754 – Refactoring - The "Use String.Format" refactoring is not available for the code that contains a variable's value or the result of an expression
  • T919254 – Spell Checker - The Spell Checker throws System.NullReferenceException in Visual Basic
  • T919007 – Test Runner – The Test Runner used with code coverage should ignore assemblies with the [ExcludeFromCodeCoverage] attribute

What's New in v20.1.6

Changes in CodeRush Menu Position Customization for Visual Studio 2019

Visual Studio 2019 16.4 and up now allows you to specify where CodeRush menus should be placed, and so the older CodeRush option (on the Quick Setup options page) has been removed, which also gives you a slight performance boost on startup (saving about 1600ms on a typical dev machine).

By default, the CodeRush menu is placed in Visual Studio Extensions menu.

CodeRush Menu | DevExpress

If you want to reposition the CodeRush menu back to the top level of the Visual Studio menu bar (recommended for most devs who use CodeRush for a higher efficiency coding experience), follow these steps:

  • Open Visual Studio 2019
  • Select Extensions -> Customize Menu...
  • Uncheck the CodeRush entry in Extensions Menu tab
  • Restart Visual Studio

Extensions Menu - CodeRush | DevExpress

Blazor Support

The following CodeRush features are now available in @code sections inside .razor files:

'Smart Dot' and 'Smart Semicolon' are disabled by default. You can enable these features on the Editor | C# | Smart Keys options page.

Options Dialog - CodeRush | DevExpress

Refactorings

We have added the 'Move to Code Behind' refactoring. This refactoring moves code located in a razor page's @code section to a code-behind file (.razor.cs). If a code-behind file does not exist, this refactoring will create one. This refactoring also brings leading comments, attributes, and any necessary references to the code-behind file.

To use this refactoring, just place the caret in code within a @code section, press Ctrl+. or Ctrl+~ to invoke the Code Actions menu, select "Move to Code Behind" and press Enter.

Move to Code Behind - CodeRush | DevExpress

Code Style Enhancements

You can now configure code style in CodeRush using the following Visual Studio's options and corresponding settings located in the EditorConfig file:

  • 'this.' and 'Me.' preferences;
  • predefined type preferences;
  • 'var' preferences;
  • use expression body.

Code Style Enhancements - CodeRush | DevExpress

You can also run code cleanup to apply these settings to your code.

The previously redundant Local Declaration style; Use this/Me qualifier; Use Expression Bodies, and Built-in Type Names code style settings have been removed and no longer exist on the Editor | C# (Visual Basic) | Programming Style page of the CodeRush options dialog.

Resolved Issues

  • T890796 – General - CodeRush causes the System.NullReferenceException in the Visual Studio's Extract Method refactoring
  • T903177 – Refactoring - The "Sync Namespace with Folder Structure" command is unavailable in a multiple-target framework project
  • T917662 – Unit Testing - Test debugging stops working with .NET Core 3.1.400-preview-015203 installed

What's New in v20.1.5

Unit Testing - Run Settings File Support

You can now exclude the following members, files, and assemblies from Code Coverage analysis using a .runsettings file:

  • Source files matching a specified path/name pattern.
  • Signed assemblies matching a specified public key token.
  • Members with a specified matching attribute.
  • Assemblies having a specified AssemblyCompany attribute value.

Run Settings File Support - CodeRush | DevExpress

For more information on the run settings file, see Customizing Code Coverage Analysis on Microsoft's website.

Blazor Support

Blazor developers get improved template and refactoring support in this release.

Code Templates

CodeRush now declares dependent namespaces when corresponding C# templates are expanded in .razor files. For example, the 'nsb' template (to create new StringBuilder instances) automatically adds the necessary '@using System.Text' namespace reference at the top of the .razor file.

Code Templates - CodeRush | DevExpress

Refactorings

  • Remove Type Quallifier is now available from the @code sections in .razor files.

    Remove Type Quallifier - CodeRush | DevExpress

  • Make Explicit now properly declares any needed namespace references when changing implicit variable declarations to variables that are explicitly-declared.

    Make Explicit - CodeRush | DevExpress

Resolved Issues

T895178 – Code Templates - The 'ms' template is expanded inside a variable declaration

What's New in v20.1.4

Unit Testing

In this release the CodeRush Test Runner gains the ability to show and run tests for all target frameworks in multi-framework projects. You can run tests for all target frameworks or for only tests in a selected framework.

Unit Testing - CodeRush | DevExpress

Code Formatting

CodeRush lets you configure line breaks around and within simple statements (statements that consist of a single line of code that ends in a semicolon, for example, method calls, return statements, throw statements, etc.) and empty code blocks.

Code Formatting - CodeRush | DevExpress

Code Style

We have added new Code Style options for expression bodies in methods, constructors, operators, properties, and other members.

Code Style - CodeRush | DevExpress

These code style settings are used by Declaration Providers, Declare Menu, Templates, and other features that generate new members from scratch.

You can also use the "Apply expression body styles" code cleanup rule to apply this new code style.

Code Style - CodeRush | DevExpress

ExecuteRefactoring Command

The new ExecuteRefactoring command allows you to quickly run a specified refactoring without the UI overhead of invoking the Code Actions menu. To bind a refactoring to a new shortcut, bring up the IDE | Shortcuts options page, create a new shortcut, select the ExecuteRefactoring command, and specify the name of the refactoring you want to invoke in the 'Parameters' text box. With the shortcut bound, you can invoke this refactoring instantly by pressing the shortcut when the caret or selection is over the code you want to change.

ExecuteRefactoring Command - CodeRush | DevExpress

You can find names of supported refactorings on the Editor | Language | Code Actions | Code Actions Catalog options page.

ExecuteRefactoring Command - CodeRush | DevExpress

The screencast below shows the "Ctrl+Shift+3" shortcut invoking Extract String to Resource.

ExecuteRefactoring Command - CodeRush | DevExpress

Resolved Issues

  • T893013 – Clipboard History stops working when the "Discover Tests from Assembly" option of Test Runner is enabled
  • T892197 – Code Cleanup - An error occurred when saving a Visual Basic file
  • T883411 – Code Places - Impossible to change font family and font size when the "Auto hide Code Places" option is enabled in the options page
  • T885388 – Debug Visualizer incorrectly displays lambda expressions
  • T892437 – Debug Visualizer - An error occurred while parsing stack trace in Visual Basic
  • T886841 – IntelliRush - Committing a selected item by pressing "Enter" inserts a redundant line break in Visual Studio 16.5.0 Preview 5.0
  • T893563 – Code Cleanup with Convert to string interpolation fails
  • T890704 – Unit Testing - Test icons for newly added test methods are lost after building a project

What's New in v20.1.3

Duplicate Code Detection

Now you can detect structurally similar blocks of С# code, in a solution or an active project, making it easier to identify improve the quality of your code bases.

To find duplicate code in a C# solution, open the solution, from the Visual Studio main menu select CodeRush | Windows | Duplicate Code, and then click Refresh in the Duplicate Code tool window to run duplicate code analysis.

Duplicate Code Detection - CodeRush | DevExpress

To restrict code analysis to the active project, toggle the 'Limit analysis to the active project' and click Refresh.

Duplicate Code Detection - CodeRush | DevExpress

When duplicate code analysis is complete, CodeRush shows found code blocks in the cluster list and highlights duplicate code in the code preview.

Duplicate Code Detection - CodeRush | DevExpress

To open the highlighted code in the Visual Studio editor, double-click it in the code preview.

Duplicate Code Detection - CodeRush | DevExpress

Duplicate code analysis results can be imported/exported to XML.

Duplicate Code Detection - CodeRush | DevExpress

You can configure the search engine's granularity level on the Editor | C# | Code Analysis | Duplicate Code page in the CodeRush Options dialog. The granularity setting lets you balance performance and memory usage against the quality and size of the result set.

Duplicate Code Detection - CodeRush | DevExpress

When the granularity is small, duplicate code analysis can find smaller blocks of duplicated code, but may take a long time and use a significant amount of memory during analysis.

When the granularity is large, the engine will use less memory and will collect results faster, but may not find smaller blocks of duplicated code.

Unit Testing

Run Settings File Support

With this release, you can exclude specific functions from Code Coverage analysis using a *.runsettings file.

Run Settings File Support - CodeRush | DevExpress

For more information on the run settings file, see the Customizing Code Coverage Analysis article on Microsoft's web site.

Test Discovery Enhancements

The CodeRush Unit Test Runner can now discover tests in source code and assemblies when you open a solution. This background discovery process aborts when tests are run or when the code is built. Once a project is built successfully, the Unit Test Runner will discover tests located inside these project assemblies.

Blazor Support

Code Templates

You can now expand C# templates inside @code sections in .razor files. For example, you can type in 'ps' and press Tab (or Space, depending on your settings) to create a property of type string.

Code Templates - Blazor Support, CodeRush | DevExpress

Performance Enhancements

This release includes faster performance and lower memory use in the code formatting and unused code analysis engines.

Resolved Issues

  • T874178 – Code Analysis - The 'Type can be moved to a separate file' diagnostic produces false positives for partial types
  • T872946 – Code Providers - The 'Add to Interface' provider links different methods to one renaming group if the previous rename operation is not confirmed
  • T871663 – Formatting - A single line comment in C# switch statements is duplicated and wrapped if it is initially positioned at the end of a code line
  • T871655 – Formatting - Incorrect indentation inside case statements after the wrapping rule is applied
  • T875390 – Spell Checker - The Spell Checker does not work with interpolated strings in Visual Basic