Code cleanup
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 three default profiles available out of the box:
Built-in: Reformat Code that only applies code formatting preferences
Built-in: Reformat & Apply Syntax Style that applies code formatting preferences and code syntax styles.
Built-in: Full Cleanup that applies all available cleanup tasks except updating file header.
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.
Create a new custom cleanup profile
Press Ctrl+Alt+S or choose
(Windows and Linux) or (macOS) from the menu .Go to the cleanup profiles settings page:
.Click Add on the top of the page. JetBrains Rider will create a new cleanup profile .
Select the newly created profile in the list of profiles.
Use the right pane to configure the list of tasks in the selected profile.
Click Save in the Settings dialog 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 list. For more information, see layer-based settings.
Your newly created cleanup profile will be available in the Reformat and Cleanup Code dialog when you are running code cleanup. You can also set this profile to be used for the silent cleanup.
Run code cleanup
JetBrains Rider can apply code cleanup to an arbitrarily selected block of code, all code in the current file, all files in a directory, files in the current VCS changelist, 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.
Clean up selection or file
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.
If you are cleaning up a selection, press Alt+Enter and choose
.Alternatively you can follow the below steps, which work for both selection and file.
Press Ctrl+R, C or choose
from the main menu .In the Reformat and Cleanup Code dialog that opens, you can check and optionally change the scope for cleaning code and choose a cleanup profile to apply. Use the area to the right of the selected profile to check the tasks included in that profile.
If none of the available profiles suits you, click Edit , then choose one of the existing profiles and click Clone to create a new custom profile and save the changes.
Click Run to clean up 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, run code cleanup from the Solution Explorer.
Clean up multiple files, projects, or entire solution
Select one or more items (files, directories, projects, or the solution) in the Solution Explorer.
Press Ctrl+R, C or choose
from the main menu .Choose a cleanup profile as described above.
Click Run to clean up code in the selected scope.
You can run Code Cleanup in code that you have recently modified and are going to commit to Git. JetBrains Rider will run the selected cleanup profile before committing.
Clean up code before committing it to Git
Press Ctrl+K or select
from the main menu.In the Commit tool window, click and in the Before Commit area, select the Cleanup with... checkbox.
Optionally, you can click Choose profile to specify the cleanup profile that should be used.
Click Commit or Commit and Push. JetBrains Rider will run code cleanup on the ranges staged for the commit, and then commit the changes.
You can run Code Cleanup every time you save changes in a file to make sure that your edits always comply with your code style. Note that this will only happen when you save changes explicitly with Ctrl+S or Ctrl+S and will not be triggered by auto-saving. However, all auto-saved files are placed to the 'reformat and cleanup' queue and will be processed on the next explicit save.
Automatically run Code Cleanup on saving changes
Press Ctrl+Alt+S to open the IDE settings and select
.Select Reformat and Cleanup Code, choose which code cleanup profile should be applied and whether to apply it to the whole file or only to the changed lines.
The next time you finish editing and save the file or all files , JetBrains Rider will clean up the affected files using the selected profile.
Silent cleanup
You can also run code cleanup in the silent mode — that is, without displaying the Reformat and Cleanup Code 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.
Assign a profile for silent code cleanup
Press Ctrl+Alt+S or choose
(Windows and Linux) or (macOS) from the menu .Go to the cleanup profiles settings page:
.Select a cleanup profile on the left and click Set as default for silent cleanup at the top of the options page.
Click Save in the Settings dialog 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 list. For more information, see layer-based settings.
Run code cleanup in silent mode
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.
Press Ctrl+R, G or choose
from the main menu . Alternatively, you can press Ctrl+Shift+A, start typing the command name in the popup, and then choose it there.
Available code cleanup tasks
The tables below list available cleanup tasks for different languages. If you need the cleanup to perform only a part of these tasks, you can create a custom cleanup profile for that.
Reformat code
C# | |
Reformat code | Reformats your code according to the preferences that you can configure on the Apply formatting rules. page of JetBrains Rider settings . For more information, see |
Reformat embedded XML doc comments | Reformats XML doc comments according to options configurable on the page of JetBrains Rider settings .Note that JetBrains Rider does not reformat plain comments like: // A plain single-line comment or /* A plain multi-line comment */ |
C++ | |
Reformat code | Reformats your code according to the preferences that you can configure on the Apply formatting rules. page of JetBrains Rider settings . For more information, see |
Visual Basic | |
Reformat code | Reformats your code according to the preferences that you can configure on the Apply formatting rules. page of JetBrains Rider settings . For more information, see |
Reformat embedded XML doc comments | Reformats XML doc comments according to options configurable on the page of JetBrains Rider settings .Note that JetBrains Rider does not reformat plain comments like: // A plain single-line comment or /* A plain multi-line comment */ |
XML | |
Reformat code | Reformats your code according to the preferences that you can configure on the Apply formatting rules. page of JetBrains Rider settings . For more information, see |
HTML | |
Reformat code | Reformats your code according to the preferences that you can configure on the Apply formatting rules. page of JetBrains Rider settings . For more information, see |
CSS | |
Reformat code | Reformats your code according to the preferences that you can configure on the Apply formatting rules. page of JetBrains Rider settings . For more information, see |
JavaScript/TypeScript | |
Reformat code | Reformats your code according to the preferences that you can configure on the Apply formatting rules. page of JetBrains Rider settings . For more information, see |
Reformat embedded XML doc comments | Reformats XML doc comments according to options configurable on the page of JetBrains Rider settings .Note that JetBrains Rider does not reformat plain comments like: // A plain single-line comment or /* A plain multi-line comment */ |
Syntax styles
C# | |
Apply 'var' style | Applies the rules for 'var' usage during the cleanup. The rules are configurable on the page of JetBrains Rider settings Ctrl+Alt+S. |
Use explicit or implicit modifier definition for types | Applies the rule for type modifiers - whether on not to use the |
Use explicit or implicit modifier definition for type members | Applies the rule for type member modifiers - whether on not to use the |
Sort modifiers | Applies the preferred order of type/member modifiers. The rule is configurable on the Code Syntax Style: Modifiers. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Apply arguments style (named vs. positional) | Applies the preferences for named/positional arguments for specific types of parameters. The preferences are configurable on the Code Syntax Style: Named/Positional Arguments. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Remove redundant parentheses | Removes redundant optional parentheses in cases specified on the Code Syntax Style: Optional Parentheses. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Add parentheses to explicitly specify operation precedence | Adds optional parentheses to clarify precedence of operations in cases specified on the Code Syntax Style: Optional Parentheses. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Add/remove braces around single statements | Adds or removes optional braces around single nested statements as specified on the Code Syntax Style: Braces for Single Nested Statements. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Add/remove brackets for attributes | Applies the rules for multiple attributes as specified on the Code Syntax Style: Multiple Attributes. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Apply code body style (expression body vs. block body) | Applies preferences for bodies of type members (expression body or block body) as specified on the Code syntax style: bodies of type members. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Arrange trailing commas | Applies preferences for trailing commas in declarations with multiple items and similar constructs (object, array, and collection initializers, as well as enums and switch expressions) as specified on the Code Syntax Style: Trailing Commas. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Apply object creation style ('new()' vs 'new T()') | Applies preferences for using the target-typed |
Apply default value style ('default' vs 'default(T)') | Applies preferences for using optional type specification in default value expressions as specified on the Code Syntax Style: Default Value Expressions ('default' vs 'default(T)'). page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
Arrange namespaces (file-scoped vs. block-scoped) | Applies preferences for using file-scoped namespace declarations in files containing a single namespace as specified on the page of JetBrains Rider settings Ctrl+Alt+S. For more information, see Code syntax style: file-scoped namespaces. |
Arrange null checking pattern style | Applies the preferred way of checking an expression for null with the type-testing 'is' operator (with |
Arrange qualifiers | Applies the rules for qualifying type members. The rules are configurable on the Code Syntax Style: Optional Member Qualifiers. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
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 Code Syntax Style: Built-In Type References. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
C/C++ | |
Add/remove braces for single statements | |
Apply 'auto' style | |
Apply function declaration style (regular vs. trailing return types) | |
Apply nested namespaces style | |
Apply type alias style (typedefs vs. type aliases) | |
Arrange cv-qualifiers | |
Arrange slashes in include directives (forward slashes vs. backslashes) | |
Arrange specifiers ('virtual' and/or 'override') on overriding functions | |
Sort include directives | |
Sort member initializers | |
XAML | |
Collapse empty tags | Removes the closing tag if the tag body is empty. |
ASP.NET/Razor | |
Normalize quotes around attribute value | Applies the preferred quote style: single quote |
Optimize imports
C# | |
Optimize 'using' directives |
For more information, see Code Syntax Style: Namespace Imports. |
Embrace 'using' directives in region | If this checkbox 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, according to the preferences configured on the page of JetBrains Rider settings Ctrl+Alt+S |
Visual Basic | |
Optimize 'import' directives |
For more information, see Code Syntax Style: Namespace Imports. |
Embrace 'using' directives in region | If this checkbox 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, according to the preferences configured on the page of JetBrains Rider settings Ctrl+Alt+S |
XAML | |
Remove redundant namespace alias | Remove all redundant namespace aliases in the scope of cleanup. Redundant aliases are also detected with the code inspection and can be removed with a quick-fix. |
TypeScript specific | |
Optimize 'import' statements | Use this option to remove redundant 'import' statements or fully-qualified names according to the settings configurable on the page of JetBrains Rider settings Ctrl+Alt+S. |
Optimize reference comments | Use this option to remove redundant reference comments. |
ASP.NET/Razor | |
Optimize @Register directives | Removes unused |
Rearrange code
C# | |
Apply file layout | Reorders type members in files according to the rules configurable on the Rearrange members with file and type layout patterns. page of JetBrains Rider settings Ctrl+Alt+S. For more information, see |
CSS | |
Alphabetize properties | Rearranges CSS properties in the alphabetical order. |
Remove redundancies & apply optimizations
C# | |
Remove code redundancies | On the Redundancies in Code categories of most languages, JetBrains Rider lists dozens of cases that have associated code inspections. Some of them require special attention, and you cannot process them in the batch mode, but most of them can be fixed automatically whenever you select Remove code redundancies in your cleanup profile. page of JetBrains Rider settings Ctrl+Alt+S, in the |
Use auto-property, if possible | Replaces simple properties and corresponding backing fields with auto-properties. For more information, see Use auto-properties. |
Make field read-only, if possible | Adds the |
Make auto-property get-only, if possible | Removes the redundant By default, JetBrains Rider automatically detects C# version based on the associated compiler. However, you can specify the target C# version explicitly for a project — press Alt+Enter on the project in the Solution Explorer and use the Language version selector on the Application page of the Project Properties dialog . To set the C# version for all projects in your solution, specify it in a Directory.Build.props file in your solution directory as described here. |
C/C++ | |
Add required 'typename' and 'template' keywords | |
Join declarations and assignments | |
Make local variables const | |
Make member functions 'const' when possible | |
Make member functions 'static' when possible | |
Remove redundant casts | |
Remove redundant 'else' keywords | |
Remove redundant elaborated type specifiers | |
Remove redundant lambda parameter lists | |
Remove redundant member initializers | |
Remove redundant parentheses | |
Remove redundant qualifiers | |
Remove redundant specifiers | |
Remove redundant statements | |
Remove redundant template arguments | |
Remove redundant 'typename' and 'template' keywords | |
Remove unreachable code | |
Remove unused #include directives | |
Remove unused lambda captures | |
Replace C-style and functional-style casts with static casts | |
Replace constants in boolean context with boolean literals | |
Replace if statements with constant conditions with 'if constexpr' | |
Replace postfix operators with prefix variants | |
Replace smart pointer constructors with make functions | |
Replace throw expressions with rethrow where possible | |
Replace type traits with corresponding template aliases or variable templates | |
Replace zero valued expressions in pointer context with nullptr | |
Replace 'tie(..)' with structured binding declarations | |
Use 'contains' for associative containers wherer possible | |
Use 'std::erase'/'std::eraseif' instead of remove-erase idiom | |
Visual Basic | |
Remove code redundancies | On the Redundancies in Code categories of most languages, JetBrains Rider lists dozens of cases that have associated code inspections. Some of them require special attention, and you cannot process them in the batch mode, but most of them can be fixed automatically whenever you select Remove code redundancies in your cleanup profile. page of JetBrains Rider settings Ctrl+Alt+S, in the |
XAML | |
Remove redundant 'Freeze' attribute | Removes |
Remove redundant modifiers attribute | Removes |
Remove redundant name attribute | Removes |
Remove redundant resource | Removes resource references that are not used |
Remove redundant empty collection property setter | |
Remove redundant attached property setter | Removes unused setters for the |
Remove redundant style property setter | Removes unused setters for the |
Remove forbidden name attribute | Removes |
Remove redundant definitions | Removes definitions if they are redundant in the context. |
Remove redundant UpdateSourceTrigger attribute | Removes |
Remove redundant Mode attribute | Removes |
Remove redundant span attribute | Removes |
Update file header (copyright)
C# | |
Update file header | Inserts or updates the file header comment that you can configure on the |
C/C++ | |
Update file header | Inserts or updates the file header comment that you can configure on the |
Run external cleanup tools
C/C++ | |
Apply Clang-tidy fix-its | In this node, you can choose all or specific fixes that will be applied according to the Clang-Tidy checks. The selected fixes will be applied even if the corresponding inspections are turned off on the page of JetBrains Rider settings Ctrl+Alt+S. Be careful when enabling too many checks at once — code cleanup runs Clang-Tidy only once for a given file, so if multiple fixes touch the same block of code, the changes might conflict with each other. |