JetBrains Rider 2018.2 Help

Code Cleanup

Code | Code Cleanup...
Ctrl+E, C

JetBrains Rider allows you to apply formatting and other code style preferences in a bulk mode to instantly eliminate code style violations in one or more files, in a project or in the entire solution.

Code cleanup profiles

Code cleanup can have various configurations (profiles) to apply in different cases according to your needs. There are two default profiles available out of the box:

These profiles help in most cases but you cannot configure them. If you want to run code cleanup with the custom set of cleanup tasks, you need to create a custom profile and specify the set of desired tasks there.

To create a new custom cleanup profile

  1. Press Ctrl+Alt+S, or alternatively choose File | Settings on Windows and Linux or JetBrains Rider | Preferences on macOS.

  2. Go to the Code Cleanup settings page: Editor | Code Cleanup.

  3. Click Add on the top of the page. JetBrains Rider will create a new cleanup profile.

  4. Select the newly created profile in the list of profiles.

  5. Use the right pane to configure the list of tasks in the selected profile.

  6. Click Save to apply the modifications and let JetBrains Rider choose where to save them, or save the modifications to a specific settings layer using the Save To drop-down list. For more information, see layer-based settings. Click Save.

Your newly created cleanup profile will be available in the Code Cleanup dialog (Code | Code Cleanup) when you are running code cleanup. You can also set this profile to be used for the silent cleanup.

Running code cleanup

Code | Code Cleanup...
Ctrl+E, C

JetBrains Rider can apply code cleanup to an arbitrarily selected block of code, all code in the current file, all files in a directory, the current project, or even the current solution. Make sure that you select the right set of cleanup tasks by choosing the right cleanup profile.

To clean up the selection or the whole file

  1. Select the scope where you want to clean up code:
    • Make a selection in the editor to clean up code in the selection.

    • Set the caret anywhere in the file to clean up code in the file.

    • Select one or more items in the Solution Explorer to clean up code in files under these items and their child items.

  2. Choose Code | Code Cleanup in the main menu.

  3. In the Code Cleanup dialog that opens, choose the scope for cleaning code and a cleanup profile.

  4. Click OK to clean code in the selected scope.

You can clean up not only an individual file, but also multiple files in a directory, project or entire solution. To do so, you should run code cleanup from the Solution Explorer.

To clean up multiple files, projects, or entire solution

  1. Select one or more items (files, directories, projects, or the solution) in the Solution Explorer.

  2. Choose Code | Code Cleanup in the main menu.

  3. Choose a cleanup profile as described above.

  4. Click OK to clean code in the selected scope.

Silent cleanup

Code | Silent Code Cleanup
Ctrl+E, F

You can also run code cleanup in the silent mode - that is, without displaying the Code Cleanup dialog. Since in this case you will not be able to choose a profile explicitly, you have to assign some cleanup profile to use for the silent code cleanup.

To assign a profile for silent code cleanup

  1. Press Ctrl+Alt+S, or alternatively choose File | Settings on Windows and Linux or JetBrains Rider | Preferences on macOS.

  2. Go to the Code Cleanup settings page: Editor | Code Cleanup.

  3. Select a cleanup profile on the left and click Set as default for silent cleanup on the top of the options page.

  4. Click Save to apply the modifications and let JetBrains Rider choose where to save them, or save the modifications to a specific settings layer using the Save To drop-down list. For more information, see layer-based settings. Click Save.

To run code cleanup in silent mode

  1. Do one of the following:
    • To run silent code cleanup in a specific code file, open it in the text editor or select it in the Solution Explorer.

    • To apply silent code cleanup to a set of files (directory, project, or solution), select the corresponding item in the Solution Explorer.

  2. Press Ctrl+Shift+A, start typing Silent Code Cleanup, and then choose this action in the list.

Available code cleanup tasks

The table below lists available cleanup tasks. If you need the cleanup to perform only a part of these tasks, you can create a custom cleanup profile for that.

Cleanup task

Description

C#

Apply file layout

Reorders type members.

Update file header

Inserts or updates the file header comment.

Code Styles

Use explicit or implicit modifier definitions for types

Applies the rule for type modifiers - whether on not to use the internal modifier explicitly. The rule is configurable on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Modifiers.

Use explicit or implicit modifier definitions for type members

Applies the rule for type member modifiers - whether on not to use the private modifier explicitly. The rule is configurable on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Modifiers.

Sort modifiers

Applies the preferred order of type/member modifiers. The rule is configurable on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Modifiers.

Apply arguments style (named | positional)

Applies the preferences for named/positional arguments for specific types of parameters. The preferences are configurable on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Named/Positional Arguments.

Remove redundant parentheses

Removes redundant optional parentheses in cases specified on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Optional Parentheses.

Add parentheses to explicitly specify operation precedence

Adds optional parentheses to clarify precedence of operations in cases specified on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Optional Parentheses.

Add/remove braces around single statements

Adds or removes optional braces around single nested statements as specified on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Braces for Single Nested Statements.

Arrange attributes

Applies the rules for multiple attributes as specified on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Multiple Attributes.

Enforce 'var' keyword usage settings

Applies the rules for 'var' usage during the cleanup. The rules are configurable on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Remove code redundancies

On the Editor | Inspection Severity page of JetBrains Rider settings (Ctrl+Alt+S), in the Redundancies in Code categories for most languages, JetBrains Rider lists over 50 redundancies that have associated code inspections. Some of them require special attention, and you simply cannot process them in the batch mode. That leaves Code Cleanup with about 30 redundancies that it is able to remove automatically whenever you select Remove code redundancies in your cleanup profile.
Specifically, code cleanup:
  • Removes:
    • Redundant empty constructors.

    • Explicit integer type specifiers in enumerations.

    • true specifiers in for statements.

    • Redundant type casts.

    • Redundant parentheses from attributes without arguments.

    • Explicit calls to base class constructors without arguments.

    • Redundant boolean comparisons.

    • Redundant braces from collection initializers with a single expression.

    • Redundant explicit delegate creation expressions.

    • Empty argument lists from object/collection initializers.

    • Redundant new keywords.

    • Redundant partial modifiers on type declarations where a type has a single part.

    • Redundant unsafe contexts and statements.

    • Redundant object.ToString() calls (for example, in a concatenation with a string or as an argument of a string.Format() call).

    • Redundant string.ToCharArray() calls.

    • Redundant specifications of argument types.

    • Signatures in anonymous methods where its parameters are not used in the method body.

    • Non-referenced labels.

    • Redundant field initializers.

    • Redundant explicit names in anonymous type properties.

    • Redundant nullable types where value type is implicitly convertible to nullable.

  • Converts:
    • Nullable types to short form Nullable<T> to T?).

    • Static method invocations to extension method calls where extension methods are invoked as static methods.

    • To implicitly typed array creation expressions when array type can be inferred from initializer.

  • Fixes:
    • Occurrences where static members of a type are accessed via derived members of the type.

Use auto-property, if possible

Replaces simple properties and corresponding backing fields with auto-properties. For more information, see Using Auto-Properties.

Make field read-only, if possible

Adds the 'readonly' keyword to fields that are assigned in the declaration or in a constructor and only have read usages. For more information, see Making Fields Readonly.

Make auto-property get-only, if possible

Removes the redundant set accessor on auto-properties that are initialized from the constructor/initializer and have no write usages. Note that this task only works for C# 6.0. By default, JetBrains Rider automatically detects C# version based on the associated compiler. However, you can specify the target C# version explicitly — press Alt+Enter on the project in the Solution Explorer and use the Language level selector on the Application page of the Project Properties dialog.

Arrange qualifiers

Applies the rules for qualifying type members. The rules are configurable on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Optional Member Qualifiers.

Fix built-in type references

Applies the rule for built-in type names (C# keyword or CLR type name). The rule is configurable on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Code Syntax Style: Built-In Type References.

Optimize 'using' directives

Provides the following configurable options:
  • Optimize 'using' directives
    Removes unused namespace import directives and sorts the namespace import directives: all System.* namespaces go first, sorted alphabetically by the second word after the dot; all other namespaces go next, in alphabetical order.. For more information, see Code Syntax Style: Namespace Imports.

  • Embrace 'using' directives in region
    If this check box is selected, a new region for wrapping all namespace import directives is created during cleanup.

  • Region name
    Allows specifying a name for the region wrapping namespace import directives.

Shorten qualified references

Replaces fully qualified names with short names when possible by importing namespaces, implementing settings configured on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Reformat code

Reformats your code according to the preferences that you can configure on the Editor | Code Style | C# | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Managing and Applying Code Formatting Rules.

Reformat embedded XML doc comments

Reformats XML doc comments.

Note that JetBrains Rider does not reformat plain comments like:
// A plain single-line comment
or
/* A plain multi-line comment */

ASP.NET

Optimize @Register directives

Removes unused @Register directives.

HTML

Reformat code

Reformats your code according to the preferences that you can configure on the Editor | Code Style | HTML | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Managing and Applying Code Formatting Rules.

Normalize quotes around attribute value

Applies the preferred quote style: single quote (') or double quote (").

JavaScript/TypeScript

Terminates statements

Terminates JavaScript statements with the semicolon.

Normalize quotes around string literal

Applies the preferred quote style: single quote (') or double quote ("). The preference can be configured on the Editor | Code Style | TypeScript | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Correct 'var' to 'let'/'const' where possible

let and const are supported in the following cases:
  • In JavaScript code, if the target JavaScript language level is ECMAScript 6 (you can choose it on the Languages & Frameworks | JavaScript page of JetBrains Rider settings (Ctrl+Alt+S) )

  • In TypeScript 1.4, if the target ECMAScript 6 is selected in the project properties.

  • In TypeScript 1.5 or above.

Move block-scope variables to most possible inner scopes

Moves variables defined outside of a function/compound statement, etc. closer to their usages if there are no other usages in outer scopes.

Convert string concatenations to template strings

In JavaScript code, if the target JavaScript language level is ECMAScript 6 (you can choose it on the Languages & Frameworks | JavaScript page of JetBrains Rider settings (Ctrl+Alt+S) ), as well as in TypeScript 1.4 or above, this option will convert string concatenations to template strings. For example:

var str1 = "Hello,"; var str2 = "Test: " + str1 + " World1";
will be converted to
const str1 = "Hello, "; const str2 = `Test: ${str1} World1`;

Reformat code

Reformats your code according to the preferences that you can configure on the Editor | Code Style | JavaScript | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Managing and Applying Code Formatting Rules.

Reformat embedded XML doc comments

Reformats XML doc comments.

Note that JetBrains Rider does not reformat plain comments like:
// A plain single-line comment
or
/* A plain multi-line comment */

TypeScript specific

Remove redundant qualifiers

Use this option to remove redundant type name qualifiers.

Optimize 'import' statements

Use this option to remove redundant 'import' statements or fully-qualified names according to the settings configurable on the Editor | Code Style | TypeScript | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Optimize reference comments

Use this option to remove redundant reference comments.

Synchronize 'public' presence with code style

This options lets you add or remove explicit 'public' modifier according to settings configurable on the Editor | Code Style | TypeScript | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Add explicit 'any' type annotation if needed

This options lets you add explicit 'any' annotation to types according to settings configurable on the Editor | Code Style | TypeScript | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Synchronize type annotation presence with code style

This options lets you enforce explicit/implicit typing according to settings configurable on the Editor | Code Style | TypeScript | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Fix relative path style in 'require' if needed

Applies the Relative file reference style in 'require' code style preference for relative paths in the require keyword. For example, import X = require("file1") or import X = require("./file1"). You can configure this preference on the Editor | Code Style | TypeScript | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Use 'as' instead of type assertions

Replaces

var bar = <string> foo;
with
var bar = foo as string;
which is a recommended way to avoid ambiguity with JSX syntax.

XAML

Collapse empty tags

Removes the closing tag if the tag is empty.

XML

Reformat code

Reformats your code according to the preferences that you can configure on the Editor | Code Style | XML | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Managing and Applying Code Formatting Rules.

Visual Basic .NET

Remove code redundancies

Removes redundant code the same way as for C# Language

Optimize 'import' directives

Removes unused namespace import directives.

Shorten qualified references

Replaces fully qualified names with short names when possible by importing namespaces, implementing settings configured on the Editor | Code Style | VB.NET | Code Style page of JetBrains Rider settings (Ctrl+Alt+S).

Reformat code

Reformats your code according to the preferences that you can configure on the Editor | Code Style | VB.NET | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Managing and Applying Code Formatting Rules.

Reformat embedded XML doc comments

Reformats XML doc comments.

Note that JetBrains Rider does not reformat plain comments like:
// A plain single-line comment
or
/* A plain multi-line comment */

CSS

Alphabetize properties

Rearranges CSS properties in the alphabetical order.

Reformat code

Reformats your code according to the preferences that you can configure on the Editor | Code Style | CSS | Code Style page of JetBrains Rider settings (Ctrl+Alt+S). For more information, see Managing and Applying Code Formatting Rules.

Last modified: 4 October 2018

See Also