« Code analysis » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
(15 versions intermédiaires par le même utilisateur non affichées)
Ligne 17 : Ligne 17 :
== Core options ==
== Core options ==
<filebox fn='.editorconfig' lang='ini'>
<filebox fn='.editorconfig' lang='ini'>
###############################
# Core EditorConfig Options  #
###############################
root = true
root = true


Ligne 40 : Ligne 37 :
indent_size              = 4
indent_size              = 4
trim_trailing_whitespace = true
trim_trailing_whitespace = true
</filebox>


== Analyzer configuration ==
<filebox fn='.editorconfig' lang='ini'>
# set the rules severity to warning
# set the rules severity to warning
dotnet_analyzer_diagnostic.severity = warning
dotnet_analyzer_diagnostic.severity = warning
</filebox>
== Miscellaneous configuration ==
<filebox fn='.editorconfig' lang='ini'>
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
</filebox>
</filebox>


== Style configuration ==
== Style configuration ==
<filebox fn='.editorconfig' lang='ini'>
<filebox fn='.editorconfig' lang='ini'>
###############################
# Style configuration        #
###############################
# IDE0160 / IDE0161: Namespace declaration preferences
# IDE0160 / IDE0161: Namespace declaration preferences
csharp_style_namespace_declarations = file_scoped : error
csharp_style_namespace_declarations = file_scoped : error
Ligne 61 : Ligne 64 :
== Disable rules ==
== Disable rules ==
<filebox fn='.editorconfig' lang='ini'>
<filebox fn='.editorconfig' lang='ini'>
###############################
# Disabled rules              #
###############################
# lower speller rule severity to suggestion
# lower speller rule severity to suggestion
dotnet_diagnostic.VSSpell001.severity = suggestion
dotnet_diagnostic.VSSpell001.severity = suggestion
dotnet_diagnostic.VSSpell002.severity = suggestion
dotnet_diagnostic.VSSpell002.severity = suggestion


# IDE0046: Use conditional expression for return
# Specify CultureInfo
dotnet_diagnostic.IDE0046.severity = suggestion
dotnet_diagnostic.CA1304.severity = suggestion
# Specify a culture
dotnet_diagnostic.CA1311.severity = suggestion
</filebox>


# IDE0058: Remove unnecessary expression value
== Custom naming convention rules ==
dotnet_diagnostic.IDE0058.severity = none
<filebox fn='.editorconfig' lang='ini'>
# 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


# CA1305: Specify IFormatProvider
# Use UPPER_CASE for constant fields
dotnet_diagnostic.CA1305.severity = none
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


# CA1310: Specify StringComparison for correctness
# Use camelCase for local variables, parameters, instance fields
dotnet_diagnostic.CA1310.severity = none
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


# Specify CultureInfo
# Async methods should have "Async" suffix
dotnet_diagnostic.CA1304.severity = suggestion
dotnet_naming_symbols.async_method_symbol.applicable_kinds  = method
# Specify a culture
dotnet_naming_symbols.async_method_symbol.required_modifiers = async
dotnet_diagnostic.CA1311.severity = suggestion
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
</filebox>
 
= [https://docs.sonarsource.com/sonarlint/visual-studio Sonar Lint] =
* [https://rules.sonarsource.com/csharp/ C# rules]
<filebox fn='.editorconfig' lang='ini'>
# S1135: Track uses of "TODO" tags
dotnet_diagnostic.S1135.severity = none
</filebox>
</filebox>
== 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
== [https://learn.microsoft.com/en-us/visualstudio/code-quality/configure-live-code-analysis-scope-managed-code?view=vs-2022#custom-analysis-scope 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
== [https://learn.microsoft.com/en-us/visualstudio/ide/code-styles-and-code-cleanup?view=vs-2022#apply-code-styles 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
{| class="wikitable wtp"
! Fixer
! Description
|-
| Apply conditional expression preferences || apply ternary conditional expression {{boxx|? :}}
|}

Version du 24 avril 2024 à 14:21

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

  1. Tools → Options
  2. Text Editor → C# → Advanced
    1. Run background code analysis for: Current document
    2. 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
Apply conditional expression preferences apply ternary conditional expression ? :