Code analysis
De Banane Atomic
Aller à la navigationAller à la recherche
Links
Enable additional rules
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 |
Sonar Lint
.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
Set the scope of live code analysis
- Tools → Options
- Text Editor → C# → Advanced
- Run background code analysis for: Current document
- Show compiler errors and warnings for: Open documents
Code Cleanup
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 | Comment |
---|---|---|
Apply object creation preferences | ||
Remove unused variables | ||
Apply IsNot preferences | ||
Remove unnecessary imports or usings | ||
Apply conditional expression preferences | apply ternary conditional expression ? : | not always for the best |
Apply auto property preferences | ||
Apply statement after block preferences (experimental) | ||
Apply parentheses preferences | ||
Apply object/collection initialization preferences | ||
Add 'this' or 'Me' qualification | ||
Apply coalesce expression preferences | ||
Fix all warnings and errors set in EditorConfig | ||
Apply compound assignment preferences | ||
Removed unused parameters | ||
Add accessibility modifiers | ||
Apply file header preferences | ||
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 | ||
Sort imports or usings | ||
Apply language/framework type preferences | ||
Apply simplify boolean expression preferences | ||
Apply null checking preferences | ||
Format document | ||
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 conversion preferences | ||
Apply static local function preferences | ||
Apply throw expression preferences | ||
Apply deconstruct preferences | ||
Add required braces for single-line control statements | ||
Apply default(T) preferences | ||
Apply new preferences | ||
Apply conditional delegate call preferences | ||
Apply using statement preferences | ||
Apply namespace preferences | ||
Apply local over anonymous function preferences |