Links
Those rules are enabled by default.
Edit the project file to enable additional rules:
MyProject.csproj
|
<PropertyGroup>
<!-- ... -->
<AnalysisLevel>latest-recommended</AnalysisLevel>
</PropertyGroup>
|
Editorconfig
Core options
.editorconfig
|
root = true
# All files
[*]
indent_style = space
insert_final_newline = true
charset = utf-8
# XML project files
[*.csproj]
indent_size = 2
# JSON config files
[*.json]
indent_size = 2
# C# code files
[*.cs]
indent_size = 4
trim_trailing_whitespace = true
|
Analyzer configuration
.editorconfig
|
# set the rules severity to warning
dotnet_analyzer_diagnostic.severity = warning
|
Miscellaneous configuration
.editorconfig
|
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
|
Style configuration
.editorconfig
|
# IDE0160 / IDE0161: Namespace declaration preferences
csharp_style_namespace_declarations = file_scoped : error
# IDE0007 / IDE0008: 'var' preferences
csharp_style_var_for_built_in_types = true
csharp_style_var_when_type_is_apparent = true
csharp_style_var_elsewhere = false : suggestion
|
Disable rules
.editorconfig
|
# lower speller rule severity to suggestion
dotnet_diagnostic.VSSpell001.severity = suggestion
dotnet_diagnostic.VSSpell002.severity = suggestion
# Specify CultureInfo
dotnet_diagnostic.CA1304.severity = suggestion
# Specify a culture
dotnet_diagnostic.CA1311.severity = suggestion
|
Custom naming convention rules
.editorconfig
|
# Style Definitions
dotnet_naming_style.upper_case_style.capitalization = all_upper
dotnet_naming_style.camel_case_style.capitalization = camel_case
dotnet_naming_style.end_with_async_style.required_suffix = Async
dotnet_naming_style.end_with_async_style.capitalization = pascal_case
# Use UPPER_CASE for constant fields
dotnet_naming_symbols.constant_field_symbol.applicable_kinds = field
dotnet_naming_symbols.constant_field_symbol.required_modifiers = const
dotnet_naming_rule.constant_fields_should_be_upper_case.symbols = constant_field_symbol
dotnet_naming_rule.constant_fields_should_be_upper_case.style = upper_case_style
dotnet_naming_rule.constant_fields_should_be_upper_case.severity = warning
# Use camelCase for local variables, parameters, instance fields
dotnet_naming_symbols.local_parameter_field_symbol.applicable_kinds = local, parameter, field
dotnet_naming_rule.should_be_camel_case.symbols = local_parameter_field_symbol
dotnet_naming_rule.should_be_camel_case.style = camel_case_style
dotnet_naming_rule.should_be_camel_case.severity = warning
# Async methods should have "Async" suffix
dotnet_naming_symbols.async_method_symbol.applicable_kinds = method
dotnet_naming_symbols.async_method_symbol.required_modifiers = async
dotnet_naming_rule.should_end_with_async.symbols = async_method_symbol
dotnet_naming_rule.should_end_with_async.style = end_with_async_style
dotnet_naming_rule.should_end_with_async.severity = warning
|
.editorconfig
|
# S1135: Track uses of "TODO" tags
dotnet_diagnostic.S1135.severity = none
|
Installation
- Installation the extension for Visual Studio or VS Code
Visual Studio
Change Code Style rules and generate a .editorconfig file
Tools → Options → Text Editor → C# → Code Style → General
- Tools → Options
- Text Editor → C# → Advanced
- Run background code analysis for: Current document
- Show compiler errors and warnings for: Open documents
Right click on the solution → Analyze and Code Cleanup:
- Run Code Cleanup (Profile X)
- Configure Code Cleanup (configure the profiles)
- Set Analysis scope → Entire solution
Fixer
|
Description
|
Apply conditional expression preferences |
apply ternary conditional expression ? :
|
Apply statement after block preferences (experimental) |
|
Apply compound assignment preferences |
|
Removed unused parameters |
|
Add accessibility modifiers |
|
Apply unused value preferences |
|
Apply namespace matches folder preferences |
|
Remove unnecessary casts |
|
Make fields readonly |
|
Remove unused suppressions |
|
Fix analyzer warnings and errors set in EditorConfig |
|
Apply inferred anonymous type member names preferences |
|
Apply null propagation preferences |
|
Apply using directive placement preferences |
|
Apply tuple name preferences |
|
Apply blank line preferences (experimental) |
|
Order modifiers |
|
Apply string interpolation preferences |
|
Apply language/framework type preferences |
|
Apply simplify boolean expression preferences |
|
Apply null checking preferences |
|
Apply expression/block body preferences |
|
Apply 'readonly struct' preferences |
|
Apply pattern matching preferences |
|
Apply blank line between consecutive braces preferences (experimental) |
|
Apply inline 'out' variable preferences |
|
Apply blank line after colon in constructor initializer preferences (experimental) |
|
Apply 'var' preferences |
|
Apply range preferences |
|
Apply embedded statement on same line preferences (experimental) |
|
Remove unnecessary nullable directives |
|
Apply method group convertion preferences |
|
Apply conditional expression preferences |
|
Apply conditional expression preferences |
|
Apply conditional expression preferences |
|
Apply conditional expression preferences |
|