From 588f5394f7e342b77ad5829f3fe9c8504c6ccfe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Schmincke?= Date: Sun, 22 Mar 2026 12:45:42 +0100 Subject: [PATCH] Create initial ruleset --- .NET/.editorconfig | 3248 ++++++++++++++++++++++++++++++++++++ .NET/README.md | 41 + .NET/directory.build.props | 69 + .NET/stylecop.json | 35 + README.md | 13 +- 5 files changed, 3404 insertions(+), 2 deletions(-) create mode 100644 .NET/.editorconfig create mode 100644 .NET/README.md create mode 100644 .NET/directory.build.props create mode 100644 .NET/stylecop.json diff --git a/.NET/.editorconfig b/.NET/.editorconfig new file mode 100644 index 0000000..7ad9e81 --- /dev/null +++ b/.NET/.editorconfig @@ -0,0 +1,3248 @@ +# https://docs.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2022 + +root = true + +############################################################################################################################################ +# Visual Studio - editorconfig # +# https://docs.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2022#supported-settings # +############################################################################################################################################ + +[*] + +charset = utf-8 +end_of_line = crlf +indent_size = 4 +indent_style = space +tab_width = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +# Not supported +max_line_length = 140 + +############################################################################################################################################ +# Editor Guidelines # +# https://marketplace.visualstudio.com/items?itemName=PaulHarrington.EditorGuidelines # +############################################################################################################################################ + +[*] + +guidelines = 140 +guidelines_style = 1px dotted red + +############################################################################################################################################ +# .NET Source Code Analysis # +# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/overview?view=vs-2022 # +############################################################################################################################################ + +[*.{cs,vb}] + +############################################################################################################################################ +# .NET Code style rules # +# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/?view=vs-2022 # +############################################################################################################################################ + +# Language and unnecessary code rules ###################################################################################################### + +# Simplify name +dotnet_diagnostic.IDE0001.severity = warning + +# Simplify member access +dotnet_diagnostic.IDE0002.severity = warning + +# Remove this or Me qualification +dotnet_diagnostic.IDE0003.severity = warning +dotnet_style_qualification_for_field = false +dotnet_style_qualification_for_property = false +dotnet_style_qualification_for_method = false +dotnet_style_qualification_for_event = false + +# Remove unnecessary cast +dotnet_diagnostic.IDE0004.severity = warning + +# Remove unnecessary import +# - https://github.com/dotnet/roslyn/issues/41640 +dotnet_diagnostic.IDE0005.severity = suggestion + +# Use 'var' instead of explicit type +dotnet_diagnostic.IDE0007.severity = warning +csharp_style_var_for_built_in_types = false +csharp_style_var_when_type_is_apparent = false +csharp_style_var_elsewhere = false + +# Use explicit type instead of 'var' +dotnet_diagnostic.IDE0008.severity = warning + +# Add this or Me qualification +dotnet_diagnostic.IDE0009.severity = warning + +# Add missing cases to switch statement +dotnet_diagnostic.IDE0010.severity = warning + +# Add braces +dotnet_diagnostic.IDE0011.severity = warning +csharp_prefer_braces = true + +# Use throw expression +dotnet_diagnostic.IDE0016.severity = warning +csharp_style_throw_expression = true + +# Use object initializers +dotnet_diagnostic.IDE0017.severity = warning +dotnet_style_object_initializer = true + +# Inline variable declaration +dotnet_diagnostic.IDE0018.severity = warning +csharp_style_inlined_variable_declaration = true + +# Use pattern matching to avoid 'as' followed by a 'null' check +dotnet_diagnostic.IDE0019.severity = warning +csharp_style_pattern_matching_over_as_with_null_check = true + +# Use pattern matching to avoid 'is' check followed by a cast +dotnet_diagnostic.IDE0020.severity = warning +csharp_style_pattern_matching_over_is_with_cast_check = true + +# Use expression body for constructors +dotnet_diagnostic.IDE0021.severity = warning +csharp_style_expression_bodied_constructors = false + +# Use expression body for methods +dotnet_diagnostic.IDE0022.severity = warning +csharp_style_expression_bodied_methods = false + +# Use expression body for operators +dotnet_diagnostic.IDE0023.severity = warning +csharp_style_expression_bodied_operators = true + +# Use expression body for operators +dotnet_diagnostic.IDE0024.severity = warning + +# Use expression body for properties +dotnet_diagnostic.IDE0025.severity = warning +csharp_style_expression_bodied_properties = true + +# Use expression body for indexers +dotnet_diagnostic.IDE0026.severity = warning +csharp_style_expression_bodied_indexers = true + +# Use expression body for accessors +dotnet_diagnostic.IDE0027.severity = warning +csharp_style_expression_bodied_accessors = true + +# Use collection initializers +dotnet_diagnostic.IDE0028.severity = warning +dotnet_style_collection_initializer = true + +# Use coalesce expression (non-nullable types) +dotnet_diagnostic.IDE0029.severity = warning +dotnet_style_coalesce_expression = true + +# Use coalesce expression (nullable types) +dotnet_diagnostic.IDE0030.severity = warning + +# Use null propagation +dotnet_diagnostic.IDE0031.severity = warning +dotnet_style_null_propagation = true + +# Use auto property +dotnet_diagnostic.IDE0032.severity = warning +dotnet_style_prefer_auto_properties = true + +# Use explicitly provided tuple name +dotnet_diagnostic.IDE0033.severity = error +dotnet_style_explicit_tuple_names = true + +# Simplify 'default' expression +dotnet_diagnostic.IDE0034.severity = warning +csharp_prefer_simple_default_expression = true + +# Remove unreachable code +dotnet_diagnostic.IDE0035.severity = warning + +# Order modifiers +dotnet_diagnostic.IDE0036.severity = warning +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async +visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async + +# Use inferred member name +dotnet_diagnostic.IDE0037.severity = warning +dotnet_style_prefer_inferred_tuple_names = true +dotnet_style_prefer_inferred_anonymous_type_member_names = true + +# Use pattern matching to avoid 'is' check followed by a cast +dotnet_diagnostic.IDE0038.severity = warning + +# Use local function instead of lambda +dotnet_diagnostic.IDE0039.severity = warning +csharp_style_prefer_local_over_anonymous_function = true + +# Add accessibility modifiers +dotnet_diagnostic.IDE0040.severity = warning +dotnet_style_require_accessibility_modifiers = for_non_interface_members + +# Use is null check +dotnet_diagnostic.IDE0041.severity = warning +dotnet_style_prefer_is_null_check_over_reference_equality_method = true + +# Deconstruct variable declaration +dotnet_diagnostic.IDE0042.severity = warning +csharp_style_deconstructed_variable_declaration = true + +# Add readonly modifier +dotnet_diagnostic.IDE0044.severity = none +dotnet_style_readonly_field = false + +# Use conditional expression for assignment +dotnet_diagnostic.IDE0045.severity = silent +dotnet_style_prefer_conditional_expression_over_assignment = true + +# Use conditional expression for return +dotnet_diagnostic.IDE0046.severity = silent +dotnet_style_prefer_conditional_expression_over_return = true + +# Remove unnecessary parentheses +dotnet_diagnostic.IDE0047.severity = warning +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity +dotnet_style_parentheses_in_other_operators = never_if_unnecessary +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity + +# Add parentheses for clarity +dotnet_diagnostic.IDE0048.severity = warning + +# Use language keywords instead of framework type names for type references +dotnet_diagnostic.IDE0049.severity = error +dotnet_style_predefined_type_for_locals_parameters_members = true +dotnet_style_predefined_type_for_member_access = true + +# Convert anonymous type to tuple +dotnet_diagnostic.IDE0050.severity = silent + +# Remove unused private member +dotnet_diagnostic.IDE0051.severity = warning + +# Remove unread private member +dotnet_diagnostic.IDE0052.severity = warning + +# Use expression body for lambdas +dotnet_diagnostic.IDE0053.severity = warning +csharp_style_expression_bodied_lambdas = true + +# Use compound assignment +dotnet_diagnostic.IDE0054.severity = warning +dotnet_style_prefer_compound_assignment = true + +# Use index operator +dotnet_diagnostic.IDE0056.severity = warning +csharp_style_prefer_index_operator = true + +# Use range operator +dotnet_diagnostic.IDE0057.severity = warning +csharp_style_prefer_range_operator = true + +# Remove unused expression value +dotnet_diagnostic.IDE0058.severity = silent +csharp_style_unused_value_expression_statement_preference = discard_variable +visual_basic_style_unused_value_expression_statement_preference = unused_local_variable + +# Remove unnecessary value assignment +dotnet_diagnostic.IDE0059.severity = warning +csharp_style_unused_value_assignment_preference = discard_variable +visual_basic_style_unused_value_assignment_preference = unused_local_variable + +# Remove unused parameter +dotnet_diagnostic.IDE0060.severity = warning +dotnet_code_quality_unused_parameters = all + +# Use expression body for local functions +dotnet_diagnostic.IDE0061.severity = warning +csharp_style_expression_bodied_local_functions = true + +# Make local function static +dotnet_diagnostic.IDE0062.severity = error +csharp_prefer_static_local_function = true + +# Use simple 'using' statement +dotnet_diagnostic.IDE0063.severity = warning +csharp_prefer_simple_using_statement = true + +# Make struct fields writable +dotnet_diagnostic.IDE0064.severity = warning + +# 'using' directive placement +dotnet_diagnostic.IDE0065.severity = warning +csharp_using_directive_placement = outside_namespace + +# Use switch expression +dotnet_diagnostic.IDE0066.severity = warning +csharp_style_prefer_switch_expression = true + +# Use 'System.HashCode.Combine' +dotnet_diagnostic.IDE0070.severity = error + +# Simplify interpolation +dotnet_diagnostic.IDE0071.severity = warning +dotnet_style_prefer_simplified_interpolation = true + +# Add missing cases to switch expression +dotnet_diagnostic.IDE0072.severity = warning + +# Require file header +dotnet_diagnostic.IDE0073.severity = none + +# Use coalesce compound assignment +dotnet_diagnostic.IDE0074.severity = warning + +# Simplify conditional expression +dotnet_diagnostic.IDE0075.severity = warning +dotnet_style_prefer_simplified_boolean_expressions = true + +# Use pattern matching +dotnet_diagnostic.IDE0078.severity = warning +csharp_style_prefer_pattern_matching = true + +# Remove unnecessary suppression +dotnet_diagnostic.IDE0079.severity = warning +dotnet_remove_unnecessary_suppression_exclusions = none + +# Remove unnecessary suppression operator +dotnet_diagnostic.IDE0080.severity = warning + +# Remove ByVal +dotnet_diagnostic.IDE0081.severity = warning + +# Convert typeof to nameof +dotnet_diagnostic.IDE0082.severity = warning + +# Use pattern matching (not operator) +dotnet_diagnostic.IDE0083.severity = warning +csharp_style_prefer_not_pattern = true + +# Use pattern matching (IsNot operator) +dotnet_diagnostic.IDE0084.severity = warning +visual_basic_style_prefer_isnot_expression = true + +# Simplify new expression +dotnet_diagnostic.IDE0090.severity = warning +csharp_style_implicit_object_creation_when_type_is_apparent = true + +# Remove unnecessary equality operator +dotnet_diagnostic.IDE0100.severity = warning + +# Remove unnecessary discard +dotnet_diagnostic.IDE0110.severity = warning + +# Simplify LINQ expression +dotnet_diagnostic.IDE0120.severity = warning + +# Namespace does not match folder structure +dotnet_diagnostic.IDE0130.severity = warning +dotnet_style_namespace_match_folder = true + +# Simplify object creation +dotnet_diagnostic.IDE0140.severity = warning +visual_basic_style_prefer_simplified_object_creation = true + +# Prefer 'null' check over type check +dotnet_diagnostic.IDE0150.severity = warning +csharp_style_prefer_null_check_over_type_check = true + +# Convert to block scoped namespace +dotnet_diagnostic.IDE0160.severity = warning +csharp_style_namespace_declarations = file_scoped + +# Convert to file-scoped namespace +dotnet_diagnostic.IDE0161.severity = warning + +# Simplify property pattern +dotnet_diagnostic.IDE0170.severity = warning +csharp_style_prefer_extended_property_pattern = true + +# Use tuple to swap values +dotnet_diagnostic.IDE0180.severity = warning +csharp_style_prefer_tuple_swap = true + +# Remove unnecessary lambda expression +dotnet_diagnostic.IDE0200.severity = warning +csharp_style_prefer_method_group_conversion = true + +# Convert to top-level statements +dotnet_diagnostic.IDE0210.severity = warning +csharp_style_prefer_top_level_statements = true + +# Convert to 'Program.Main' style program +dotnet_diagnostic.IDE0211.severity = warning + +# Add explicit cast in foreach loop +dotnet_diagnostic.IDE0220.severity = warning +dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed + +# Use UTF-8 string literal +dotnet_diagnostic.IDE0230.severity = warning +csharp_style_prefer_utf8_string_literals = true + +# Nullable directive is redundant +dotnet_diagnostic.IDE0240.severity = warning + +# Nullable directive is unnecessary +dotnet_diagnostic.IDE0241.severity = warning + +# Struct can be made 'readonly' +dotnet_diagnostic.IDE0250.severity = warning +csharp_style_prefer_readonly_struct = true + +# Member can be made 'readonly' +dotnet_diagnostic.IDE0251.severity = warning +csharp_style_prefer_readonly_struct_member = true + +# Use pattern matching +dotnet_diagnostic.IDE0260.severity = warning + +# Null check can be simplified +dotnet_diagnostic.IDE0270.severity = warning + +# Use 'nameof' +dotnet_diagnostic.IDE0280.severity = warning + +# Use primary constructor +dotnet_diagnostic.IDE0290.severity = suggestion +csharp_style_prefer_primary_constructors = true + +# Use collection expression for array +dotnet_diagnostic.IDE0300.severity = warning + +# Use collection expression for empty +dotnet_diagnostic.IDE0301.severity = warning + +# Use collection expression for stackalloc +dotnet_diagnostic.IDE0302.severity = warning + +# Use collection expression for Create() +dotnet_diagnostic.IDE0303.severity = warning + +# Use collection expression for builder +dotnet_diagnostic.IDE0304.severity = warning + +# Use collection expression for fluent +dotnet_diagnostic.IDE0305.severity = warning + +# Use conditional delegate call +dotnet_diagnostic.IDE1005.severity = warning +csharp_style_conditional_delegate_call = true + +# Miscellaneous rules ##################################################################################################################### + +# Remove invalid global 'SuppressMessageAttribute' +dotnet_diagnostic.IDE0076.severity = warning + +# Avoid legacy format target in global 'SuppressMessageAttribute' +dotnet_diagnostic.IDE0077.severity = warning + +# Formatting ############################################################################################################################ + +# Organize usings +dotnet_sort_system_directives_first = true +dotnet_separate_import_directive_groups = false + +# New-line options +csharp_new_line_before_open_brace = all +csharp_new_line_before_else = true +csharp_new_line_before_catch = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_between_query_expression_clauses = true + +# Indentation options +csharp_indent_case_contents = true +csharp_indent_switch_labels = true +csharp_indent_labels = flush_left +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents_when_block = false + +# Spacing options +csharp_space_after_cast = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_between_parentheses = false +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_around_binary_operators = before_and_after +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_after_comma = true +csharp_space_before_comma = false +csharp_space_after_dot = false +csharp_space_before_dot = false +csharp_space_after_semicolon_in_for_statement = true +csharp_space_before_semicolon_in_for_statement = false +csharp_space_around_declaration_statements = false +csharp_space_before_open_square_brackets = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_square_brackets = false + +# Wrap options +csharp_preserve_single_line_statements = false +csharp_preserve_single_line_blocks = true + +# Fix formatting +dotnet_diagnostic.IDE0055.severity = warning + +# Naming rules ############################################################################################################################ + +# Rules -------------------------------------------------------------- + +# Locals must be camel case +dotnet_naming_rule.camel_case_locals.symbols = local_symbols +dotnet_naming_rule.camel_case_locals.style = camel_case_style +dotnet_naming_rule.camel_case_locals.severity = warning + +# Type parameters must be pascal case with 'T' prefix +dotnet_naming_rule.pascal_case_type_parameters.symbols = type_parameter_symbols +dotnet_naming_rule.pascal_case_type_parameters.style = pascal_case_t_prefix_style +dotnet_naming_rule.pascal_case_type_parameters.severity = warning + +# Parameters must be camel case +dotnet_naming_rule.camel_case_parameters.symbols = parameter_symbols +dotnet_naming_rule.camel_case_parameters.style = camel_case_style +dotnet_naming_rule.camel_case_parameters.severity = warning + +# Private fields must be camel case with prefix +dotnet_naming_rule.camel_case_with_prefix_private_fields.symbols = private_field_symbols +dotnet_naming_rule.camel_case_with_prefix_private_fields.style = camel_case_style_with_prefix +dotnet_naming_rule.camel_case_with_prefix_private_fields.severity = warning + +# Async methods must be pascal case with 'Async' suffix +dotnet_naming_rule.pascal_case_async_suffix_private_methods.symbols = async_method_symbols +dotnet_naming_rule.pascal_case_async_suffix_private_methods.style = pascal_case_async_suffix_style +dotnet_naming_rule.pascal_case_async_suffix_private_methods.severity = warning + +# Class members must be pascal case +dotnet_naming_rule.pascal_case_class_members.symbols = class_member_symbols +dotnet_naming_rule.pascal_case_class_members.style = pascal_case_style +dotnet_naming_rule.pascal_case_class_members.severity = warning + +# Interfaces must be pascal case with 'I' prefix +dotnet_naming_rule.pascal_case_i_prefix_interfaces.symbols = interface_symbols +dotnet_naming_rule.pascal_case_i_prefix_interfaces.style = pascal_case_i_prefix_style +dotnet_naming_rule.pascal_case_i_prefix_interfaces.severity = warning + +# Enums, Structs, Classes, Namespaces must be pascal case +dotnet_naming_rule.pascal_case_main_symbols.symbols = main_symbols +dotnet_naming_rule.pascal_case_main_symbols.style = pascal_case_style +dotnet_naming_rule.pascal_case_main_symbols.severity = warning + +# Symbols ------------------------------------------------------------ + +# Local symbols +dotnet_naming_symbols.local_symbols.applicable_kinds = local_function,local +dotnet_naming_symbols.local_symbols.applicable_accessibilities = local + +# Parameter symbols +dotnet_naming_symbols.parameter_symbols.applicable_kinds = parameter + +# Type parameter symbols +dotnet_naming_symbols.type_parameter_symbols.applicable_kinds = type_parameter + +# Private field symbols +dotnet_naming_symbols.private_field_symbols.applicable_kinds = field +dotnet_naming_symbols.private_field_symbols.applicable_accessibilities = private + +# Async method symbols +dotnet_naming_symbols.async_method_symbols.applicable_kinds = method +dotnet_naming_symbols.async_method_symbols.required_modifiers = async + +# Member symbols +dotnet_naming_symbols.class_member_symbols.applicable_kinds = delegate,event,field,method,property + +# Interface symbols +dotnet_naming_symbols.interface_symbols.applicable_kinds = interface +dotnet_naming_symbols.interface_symbols.applicable_accessibilities = * + +# Main symbols +dotnet_naming_symbols.main_symbols.applicable_kinds = namespace,class,struct,enum +dotnet_naming_symbols.main_symbols.applicable_accessibilities = * + +# Styles ------------------------------------------------------------- + +# Camel case style +dotnet_naming_style.camel_case_style.capitalization = camel_case + +# Camel case style with prefix +dotnet_naming_style.camel_case_style_with_prefix.capitalization = camel_case +dotnet_naming_style.camel_case_style_with_prefix.required_prefix = _ + +# Pascal case style +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +# Pascal case with 'Async' suffix +dotnet_naming_style.pascal_case_async_suffix_style.required_suffix = Async +dotnet_naming_style.pascal_case_async_suffix_style.capitalization = pascal_case + +# Pascal case with 'I' prefix +dotnet_naming_style.pascal_case_i_prefix_style.required_prefix = I +dotnet_naming_style.pascal_case_i_prefix_style.capitalization = pascal_case + +# Pascal case with 'T' prefix +dotnet_naming_style.pascal_case_t_prefix_style.required_prefix = T +dotnet_naming_style.pascal_case_t_prefix_style.capitalization = pascal_case + +# Naming styles +dotnet_diagnostic.IDE1006.severity = warning + +########################################################################################################################################### +# .NET Code quality rules # +# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/?view=vs-2022 # +########################################################################################################################################### + +# Design ################################################################################################################################## + +# Do not declare static members on generic types +dotnet_diagnostic.CA1000.severity = error + +# Types that own disposable fields should be disposable +dotnet_diagnostic.CA1001.severity = error + +# Do not expose generic lists +dotnet_diagnostic.CA1002.severity = error + +# Use generic event handler instances +dotnet_diagnostic.CA1003.severity = error + +# Avoid excessive parameters on generic types +dotnet_diagnostic.CA1005.severity = error + +# Enums should have zero value +dotnet_diagnostic.CA1008.severity = error + +# Collections should implement generic interface +dotnet_diagnostic.CA1010.severity = error + +# Abstract types should not have constructors +dotnet_diagnostic.CA1012.severity = error + +# Mark assemblies with CLSCompliant +dotnet_diagnostic.CA1014.severity = error + +# Mark assemblies with assembly version +dotnet_diagnostic.CA1016.severity = error + +# Mark assemblies with ComVisible +dotnet_diagnostic.CA1017.severity = error + +# Mark attributes with AttributeUsageAttribute +dotnet_diagnostic.CA1018.severity = error + +# Define accessors for attribute arguments +dotnet_diagnostic.CA1019.severity = error + +# Avoid out parameters +dotnet_diagnostic.CA1021.severity = error + +# Use properties where appropriate +dotnet_diagnostic.CA1024.severity = error + +# Mark enums with FlagsAttribute +dotnet_diagnostic.CA1027.severity = error + +# Enum Storage should be Int32 +dotnet_diagnostic.CA1028.severity = error + +# Use events where appropriate +dotnet_diagnostic.CA1030.severity = error + +# Do not catch general exception types +dotnet_diagnostic.CA1031.severity = error + +# Implement standard exception constructors +dotnet_diagnostic.CA1032.severity = error + +# Interface methods should be callable by child types +dotnet_diagnostic.CA1033.severity = error + +# Nested types should not be visible +dotnet_diagnostic.CA1034.severity = error + +# Override methods on comparable types +dotnet_diagnostic.CA1036.severity = error + +# Avoid empty interfaces +dotnet_diagnostic.CA1040.severity = error + +# Provide ObsoleteAttribute message +dotnet_diagnostic.CA1041.severity = error + +# Use integral or string argument for indexers +dotnet_diagnostic.CA1043.severity = error + +# Properties should not be write only +dotnet_diagnostic.CA1044.severity = error + +# Do not pass types by reference +dotnet_diagnostic.CA1045.severity = error + +# Do not overload equality operator on reference types +dotnet_diagnostic.CA1046.severity = error + +# Do not declare protected member in sealed type +dotnet_diagnostic.CA1047.severity = error + +# Declare types in namespaces +dotnet_diagnostic.CA1050.severity = error + +# Do not declare visible instance fields +dotnet_diagnostic.CA1051.severity = error + +# Static holder types should be sealed +dotnet_diagnostic.CA1052.severity = error + +# Static holder types should not have constructors +dotnet_diagnostic.CA1053.severity = error + +# URI parameters should not be strings +dotnet_diagnostic.CA1054.severity = error + +# URI return values should not be strings +dotnet_diagnostic.CA1055.severity = error + +# URI properties should not be strings +dotnet_diagnostic.CA1056.severity = error + +# Types should not extend certain base types +dotnet_diagnostic.CA1058.severity = error + +# Move P/Invokes to NativeMethods class +dotnet_diagnostic.CA1060.severity = error + +# Do not hide base class methods +dotnet_diagnostic.CA1061.severity = error + +# Validate arguments of public methods +dotnet_diagnostic.CA1062.severity = error + +# Implement IDisposable correctly +dotnet_diagnostic.CA1063.severity = error + +# Exceptions should be public +dotnet_diagnostic.CA1064.severity = error + +# Do not raise exceptions in unexpected locations +dotnet_diagnostic.CA1065.severity = error + +# Implement IEquatable when overriding Equals +dotnet_diagnostic.CA1066.severity = error + +# Override Object.Equals(object) when implementing IEquatable +dotnet_diagnostic.CA1067.severity = error + +# CancellationToken parameters must come last +dotnet_diagnostic.CA1068.severity = error + +# Enumss should not have duplicate values +dotnet_diagnostic.CA1069.severity = error + +# Do not declare event fields as virtual +dotnet_diagnostic.CA1070.severity = error + +# Documentation ########################################################################################################################### + +# Avoid using cref tags with a prefix +dotnet_diagnostic.CA1200.severity = warning + +# Globalization ########################################################################################################################### + +# Do not pass literals as localized parameters +dotnet_diagnostic.CA1303.severity = warning + +# Specify CultureInfo +dotnet_diagnostic.CA1304.severity = warning + +# Specify IFormatProvider +dotnet_diagnostic.CA1305.severity = warning + +# Specify StringComparison +dotnet_diagnostic.CA1307.severity = warning + +# Normalize strings to uppercase +dotnet_diagnostic.CA1308.severity = warning + +# Use ordinal StringComparison +dotnet_diagnostic.CA1309.severity = warning + +# Specify StringComparison for correctness +dotnet_diagnostic.CA1310.severity = warning + +# Specify a culture or use an invariant version +dotnet_diagnostic.CA1311.severity = warning + +# Specify marshaling for P/Invoke string arguments +dotnet_diagnostic.CA2101.severity = warning + +# Portability and interoperability ######################################################################################################## + +# P/Invokes should not be visible +dotnet_diagnostic.CA1401.severity = error + +# Validate platform compatibility +dotnet_diagnostic.CA1416.severity = error + +# Do not use 'OutAttribute' on string parameters for P/Invokes +dotnet_diagnostic.CA1417.severity = error + +# Use valid platform string +dotnet_diagnostic.CA1418.severity = error + +# Provide a parameterless constructor that is as visible as the containing type for concrete types derived from 'System.Runtime.InteropServices.SafeHandle' +dotnet_diagnostic.CA1419.severity = error + +# Property, type, or attribute requires runtime marshalling +dotnet_diagnostic.CA1420.severity = error + +# Method uses runtime marshalling when DisableRuntimeMarshallingAttribute is applied +dotnet_diagnostic.CA1421.severity = error + +# Validate platform compatibility - obsoleted APIs +dotnet_diagnostic.CA1422.severity = error + +# Maintainability ######################################################################################################################### + +# Avoid excessive inheritance +dotnet_diagnostic.CA1501.severity = warning + +# Avoid excessive complexity +dotnet_diagnostic.CA1502.severity = warning + +# Avoid unmaintainable code +dotnet_diagnostic.CA1505.severity = warning + +# Avoid excessive class coupling +dotnet_diagnostic.CA1506.severity = warning + +# Use nameof in place of string +dotnet_diagnostic.CA1507.severity = warning + +# Avoid dead conditional code +dotnet_diagnostic.CA1508.severity = warning + +# Invalid entry in code metrics configuration file +dotnet_diagnostic.CA1509.severity = warning + +# Use ArgumentNullException throw helper +dotnet_diagnostic.CA1510.severity = warning + +# Use ArgumentException throw helper +dotnet_diagnostic.CA1511.severity = warning + +# Use ArgumentOutOfRangeException throw helper +dotnet_diagnostic.CA1512.severity = warning + +# Use ObjectDisposedException throw helper +dotnet_diagnostic.CA1513.severity = warning + +# Avoid redundant length argument +dotnet_diagnostic.CA1514.severity = warning + +# Consider making public types internal +dotnet_diagnostic.CA1515.severity = warning + +# Naming ################################################################################################################################## + +# Do not name enum values 'Reserved' +dotnet_diagnostic.CA1700.severity = warning + +# Identifiers should not contain underscores +dotnet_diagnostic.CA1707.severity = warning + +# Identifiers should differ by more than case +dotnet_diagnostic.CA1708.severity = warning + +# Identifiers should have correct suffix +dotnet_diagnostic.CA1710.severity = warning + +# Identifiers should not have incorrect suffix +dotnet_diagnostic.CA1711.severity = warning + +# Do not prefix enum values with type name +dotnet_diagnostic.CA1712.severity = warning + +# Events should not have 'Before' or 'After' prefix +dotnet_diagnostic.CA1713.severity = warning + +# Flags enums should have plural names +dotnet_diagnostic.CA1714.severity = warning + +# Identifiers should have correct prefix +dotnet_diagnostic.CA1715.severity = warning + +# Identifiers should not match keywords +dotnet_diagnostic.CA1716.severity = warning + +# Only FlagsAttribute enums should have plural names +dotnet_diagnostic.CA1717.severity = warning + +# Identifiers should not contain type names +dotnet_diagnostic.CA1720.severity = warning + +# Property names should not match get methods +dotnet_diagnostic.CA1721.severity = warning + +# Type names should not match namespaces +dotnet_diagnostic.CA1724.severity = warning + +# Parameter names should match base declaration +dotnet_diagnostic.CA1725.severity = warning + +# Use PascalCase for named placeholders +dotnet_diagnostic.CA1727.severity = warning + +# Performance ############################################################################################################################# + +# Use literals where appropriate +dotnet_diagnostic.CA1802.severity = error + +# Do not initialize unnecessarily +dotnet_diagnostic.CA1805.severity = error + +# Do not ignore method results +dotnet_diagnostic.CA1806.severity = error + +# Initialize reference type static fields inline +dotnet_diagnostic.CA1810.severity = error + +# Avoid uninstantiated internal classes +dotnet_diagnostic.CA1812.severity = error + +# Avoid unsealed attributes +dotnet_diagnostic.CA1813.severity = error + +# Prefer jagged arrays over multidimensional +dotnet_diagnostic.CA1814.severity = error + +# Override equals and operator equals on value types +dotnet_diagnostic.CA1815.severity = error + +# Properties should not return arrays +dotnet_diagnostic.CA1819.severity = error + +# Test for empty strings using string length +dotnet_diagnostic.CA1820.severity = error + +# Remove empty finalizers +dotnet_diagnostic.CA1821.severity = error + +# Mark members as static +dotnet_diagnostic.CA1822.severity = error + +# Avoid unused private fields +dotnet_diagnostic.CA1823.severity = error + +# Mark assemblies with NeutralResourcesLanguageAttribute +dotnet_diagnostic.CA1824.severity = error + +# Avoid zero-length array allocations. +dotnet_diagnostic.CA1825.severity = error + +# Use property instead of Linq Enumerable method +dotnet_diagnostic.CA1826.severity = error + +# Do not use Count() or LongCount() when Any() can be used +dotnet_diagnostic.CA1827.severity = error + +# Do not use CountAsync() or LongCountAsync() when AnyAsync() can be used +dotnet_diagnostic.CA1828.severity = error + +# Use Length/Count property instead of Enumerable.Count() method +dotnet_diagnostic.CA1829.severity = error + +# Prefer strongly-typed Append and Insert method overloads on StringBuilder +dotnet_diagnostic.CA1830.severity = error + +# Use AsSpan or AsMemory instead of Range-based indexers when appropriate +dotnet_diagnostic.CA1831.severity = error + +# Use AsSpan or AsMemory instead of Range-based indexers for getting ReadOnlySpan or ReadOnlyMemory portion of an array +dotnet_diagnostic.CA1832.severity = error + +# Use AsSpan or AsMemory instead of Range-based indexers for getting Span or Memoty portion of an array +dotnet_diagnostic.CA1833.severity = error + +# Use StringBuilder.Append(char) for single character strings +dotnet_diagnostic.CA1834.severity = error + +# Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync' +dotnet_diagnostic.CA1835.severity = error + +# Prefer IsEmpty over Count when available +dotnet_diagnostic.CA1836.severity = error + +# Use 'Environment.ProcessId' instead of 'Process.GetCurrentProcess().Id' +dotnet_diagnostic.CA1837.severity = error + +# Avoid 'StringBuilder' parameters for P/Invokes +dotnet_diagnostic.CA1838.severity = error + +# Use 'Environment.ProcessPath' instead of 'Process.GetCurrentProcess().MainModule.FileName' +dotnet_diagnostic.CA1839.severity = error + +# Use 'Environment.CurrentManagedThreadId' instead of 'Thread.CurrentThread.ManagedThreadId' +dotnet_diagnostic.CA1840.severity = error + +# Prefer Dictionary Contains methods +dotnet_diagnostic.CA1841.severity = error + +# Do not use 'WhenAll' with a single task +dotnet_diagnostic.CA1842.severity = error + +# Do not use 'WaitAll' with a single task +dotnet_diagnostic.CA1843.severity = error + +# Provide memory-based overrides of async methods when subclassing 'Stream' +dotnet_diagnostic.CA1844.severity = error + +# Use span-based 'string.Concat' +dotnet_diagnostic.CA1845.severity = error + +# Prefer AsSpan over Substring +dotnet_diagnostic.CA1846.severity = error + +# Use char literal for a single character lookup +dotnet_diagnostic.CA1847.severity = error + +# Use the LoggerMessage delegates +dotnet_diagnostic.CA1848.severity = error + +# Call async methods when in an async method +dotnet_diagnostic.CA1849.severity = error + +# Prefer static HashData method over ComputeHash +dotnet_diagnostic.CA1850.severity = error + +# Possible multiple enumerations of IEnumerable collection +dotnet_diagnostic.CA1851.severity = error + +# Seal internal types +dotnet_diagnostic.CA1852.severity = error + +# Unnecessary call to 'Dictionary.ContainsKey(key)' +dotnet_diagnostic.CA1853.severity = error + +# Prefer the IDictionary.TryGetValue(TKey, out TValue) method +dotnet_diagnostic.CA1854.severity = error + +# Use Span.Clear() instead of Span.Fill() +dotnet_diagnostic.CA1855.severity = error + +# Use StartsWith instead of IndexOf +dotnet_diagnostic.CA1858.severity = error + +# Use concrete types when possible for improved performance +dotnet_diagnostic.CA1859.severity = error + +# Avoid using 'Enumerable.Any()' extension method +dotnet_diagnostic.CA1860.severity = error + +# Avoid constant arrays as arguments +dotnet_diagnostic.CA1861.severity = error + +# Use the 'StringComparison' method overloads to perform case-insensitive string comparisons +dotnet_diagnostic.CA1862.severity = error + +# Use 'CompositeFormat' +dotnet_diagnostic.CA1863.severity = error + +# Prefer the 'IDictionary.TryAdd(TKey, TValue)' method +dotnet_diagnostic.CA1864.severity = error + +# Use 'string.Method(char)' instead of 'string.Method(string)' for string with single char +dotnet_diagnostic.CA1865.severity = error + +# Use 'string.Method(char)' instead of 'string.Method(string)' for string with single char +dotnet_diagnostic.CA1866.severity = error + +# Use 'string.Method(char)' instead of 'string.Method(string)' for string with single char +dotnet_diagnostic.CA1867.severity = error + +# Unnecessary call to 'Contains' for sets +dotnet_diagnostic.CA1868.severity = error + +# Cache and reuse 'JsonSerializerOptions' instances +dotnet_diagnostic.CA1869.severity = error + +# Use a cached 'SearchValues' instance +dotnet_diagnostic.CA1870.severity = error + +# SingleFile ############################################################################################################################## + +# Avoid accessing Assembly file path when publishing as a single file +dotnet_diagnostic.IL3000.severity = error + +# Avoid accessing Assembly file path when publishing as a single file +dotnet_diagnostic.IL3001.severity = error + +# Avoid calling members annotated with 'RequiresAssemblyFilesAttribute' when publishing as a single file +dotnet_diagnostic.IL3002.severity = error + +# 'RequiresAssemblyFilesAttribute' annotations must match across all interface implementations or overrides +dotnet_diagnostic.IL3003.severity = error + +# Reliability ############################################################################################################################# + +# Dispose objects before losing scope +dotnet_diagnostic.CA2000.severity = error + +# Do not lock on objects with weak identity +dotnet_diagnostic.CA2002.severity = error + +# Do not directly await a Task +dotnet_diagnostic.CA2007.severity = error + +# Do not create tasks without passing a TaskScheduler +dotnet_diagnostic.CA2008.severity = error + +# Do not call ToImmutableCollection on an ImmutableCollection value +dotnet_diagnostic.CA2009.severity = error + +# Do not assign property within its setter +dotnet_diagnostic.CA2011.severity = error + +# Use ValueTasks correctly +dotnet_diagnostic.CA2012.severity = error + +# Do not use ReferenceEquals with value types +dotnet_diagnostic.CA2013.severity = error + +# Do not use stackalloc in loops +dotnet_diagnostic.CA2014.severity = error + +# Do not define finalizers for types derived from MemoryManager +dotnet_diagnostic.CA2015.severity = error + +# Forward the 'CancellationToken' parameter to methods that take one +dotnet_diagnostic.CA2016.severity = error + +# Parameter count mismatch +dotnet_diagnostic.CA2017.severity = error + +# The count argument to Buffer.BlockCopy should specify the number of bytes to copy +dotnet_diagnostic.CA2018.severity = error + +# ThreadStatic fields should not use inline initialization +dotnet_diagnostic.CA2019.severity = error + +# Prevent behavioral change caused by built-in operators of IntPtr/UIntPtr +dotnet_diagnostic.CA2020.severity = error + +# Don't call Enumerable.Cast or Enumerable.OfType with incompatible types +dotnet_diagnostic.CA2021.severity = error + +# Security ################################################################################################################################ + +# Review SQL queries for security vulnerabilities +dotnet_diagnostic.CA2100.severity = error + +# Review visible event handlers +dotnet_diagnostic.CA2109.severity = error + +# Seal methods that satisfy private interfaces +dotnet_diagnostic.CA2119.severity = error + +# Avoid handling Corrupted State Exceptions +dotnet_diagnostic.CA2153.severity = error + +# Do not use insecure deserializer BinaryFormatter +dotnet_diagnostic.CA2300.severity = error + +# Do not call BinaryFormatter.Deserialize without first setting BinaryFormatter.Binder +dotnet_diagnostic.CA2301.severity = error + +# Ensure BinaryFormatter.Binder is set before calling BinaryFormatter.Deserialize +dotnet_diagnostic.CA2302.severity = error + +# Do not use insecure deserializer LosFormatter +dotnet_diagnostic.CA2305.severity = error + +# Do not use insecure deserializer NetDataContractSerializer +dotnet_diagnostic.CA2310.severity = error + +# Do not deserialize without first setting NetDataContractSerializer.Binder +dotnet_diagnostic.CA2311.severity = error + +# Ensure NetDataContractSerializer.Binder is set before deserializing +dotnet_diagnostic.CA2312.severity = error + +# Do not use insecure deserializer ObjectStateFormatter +dotnet_diagnostic.CA2315.severity = error + +# Do not deserialize with JavaScriptSerializer using a SimpleTypeResolver +dotnet_diagnostic.CA2321.severity = error + +# Ensure JavaScriptSerializer is not initialized with SimpleTypeResolver before deserializing +dotnet_diagnostic.CA2322.severity = error + +# Do not use TypeNameHandling values other than None +dotnet_diagnostic.CA2326.severity = error + +# Do not use insecure JsonSerializerSettings +dotnet_diagnostic.CA2327.severity = error + +# Ensure that JsonSerializerSettings are secure +dotnet_diagnostic.CA2328.severity = error + +# Do not deserialize with JsonSerializer using an insecure configuration +dotnet_diagnostic.CA2329.severity = error + +# Ensure that JsonSerializer has a secure configuration when deserializing +dotnet_diagnostic.CA2330.severity = error + +# Ensure DataTable.ReadXml()'s input is trusted +dotnet_diagnostic.CA2350.severity = error + +# Ensure DataSet.ReadXml()'s input is trusted +dotnet_diagnostic.CA2351.severity = error + +# Unsafe DataSet or DataTable in serializable type can be vulnerable to remote code execution attacks +dotnet_diagnostic.CA2352.severity = error + +# Unsafe DataSet or DataTable in serializable type +dotnet_diagnostic.CA2353.severity = error + +# Unsafe DataSet or DataTable in deserialized object graph can be vulnerable to remote code execution attacks +dotnet_diagnostic.CA2354.severity = error + +# Unsafe DataSet or DataTable type found in deserializable object graph +dotnet_diagnostic.CA2355.severity = error + +# Unsafe DataSet or DataTable type in web deserializable object graph +dotnet_diagnostic.CA2356.severity = error + +# Ensure autogenerated class containing DataSet.ReadXml() is not used with untrusted data +dotnet_diagnostic.CA2361.severity = error + +# Unsafe DataSet or DataTable in autogenerated serializable type can be vulnerable to remote code execution attacks +dotnet_diagnostic.CA2362.severity = error + +# Review code for SQL injection vulnerabilities +dotnet_diagnostic.CA3001.severity = error + +# Review code for XSS vulnerabilities +dotnet_diagnostic.CA3002.severity = error + +# Review code for file path injection vulnerabilities +dotnet_diagnostic.CA3003.severity = error + +# Review code for information disclosure vulnerabilities +dotnet_diagnostic.CA3004.severity = error + +# Review code for LDAP injection vulnerabilities +dotnet_diagnostic.CA3005.severity = error + +# Review code for process command injection vulnerabilities +dotnet_diagnostic.CA3006.severity = error + +# Review code for open redirect vulnerabilities +dotnet_diagnostic.CA3007.severity = error + +# Review code for XPath injection vulnerabilities +dotnet_diagnostic.CA3008.severity = error + +# Review code for XML injection vulnerabilities +dotnet_diagnostic.CA3009.severity = error + +# Review code for XAML injection vulnerabilities +dotnet_diagnostic.CA3010.severity = error + +# Review code for DLL injection vulnerabilities +dotnet_diagnostic.CA3011.severity = error + +# Review code for regex injection vulnerabilities +dotnet_diagnostic.CA3012.severity = error + +# Do Not Add Schema By URL +dotnet_diagnostic.CA3061.severity = error + +# Insecure DTD processing in XML +dotnet_diagnostic.CA3075.severity = error + +# Insecure XSLT script processing. +dotnet_diagnostic.CA3076.severity = error + +# Insecure Processing in API Design, XmlDocument and XmlTextReader +dotnet_diagnostic.CA3077.severity = error + +# Mark Verb Handlers With Validate Antiforgery Token +dotnet_diagnostic.CA3147.severity = error + +# Do Not Use Weak Cryptographic Algorithms +dotnet_diagnostic.CA5350.severity = error + +# Do Not Use Broken Cryptographic Algorithms +dotnet_diagnostic.CA5351.severity = error + +# Do Not Use Unsafe Cipher Modes +dotnet_diagnostic.CA5358.severity = error + +# Do Not Disable Certificate Validation +dotnet_diagnostic.CA5359.severity = error + +# Do Not Call Dangerous Methods In Deserialization +dotnet_diagnostic.CA5360.severity = error + +# Do Not Disable SChannel Use of Strong Crypto +dotnet_diagnostic.CA5361.severity = error + +# Potential reference cycle in deserialized object graph +dotnet_diagnostic.CA5362.severity = error + +# Do Not Disable Request Validation +dotnet_diagnostic.CA5363.severity = error + +# Do Not Use Deprecated Security Protocols +dotnet_diagnostic.CA5364.severity = error + +# Do Not Disable HTTP Header Checking +dotnet_diagnostic.CA5365.severity = error + +# Use XmlReader For DataSet Read Xml +dotnet_diagnostic.CA5366.severity = error + +# Do Not Serialize Types With Pointer Fields +dotnet_diagnostic.CA5367.severity = error + +# Set ViewStateUserKey For Classes Derived From Page +dotnet_diagnostic.CA5368.severity = error + +# Use XmlReader For Deserialize +dotnet_diagnostic.CA5369.severity = error + +# Use XmlReader For Validating Reader +dotnet_diagnostic.CA5370.severity = error + +# Use XmlReader For Schema Read +dotnet_diagnostic.CA5371.severity = error + +# Use XmlReader For XPathDocument +dotnet_diagnostic.CA5372.severity = error + +# Do not use obsolete key derivation function +dotnet_diagnostic.CA5373.severity = error + +# Do Not Use XslTransform +dotnet_diagnostic.CA5374.severity = error + +# Do Not Use Account Shared Access Signature +dotnet_diagnostic.CA5375.severity = error + +# Use SharedAccessProtocol HttpsOnly +dotnet_diagnostic.CA5376.severity = error + +# Use Container Level Access Policy +dotnet_diagnostic.CA5377.severity = error + +# Do not disable ServicePointManagerSecurityProtocols +dotnet_diagnostic.CA5378.severity = error + +# Do Not Use Weak Key Derivation Function Algorithm +dotnet_diagnostic.CA5379.severity = error + +# Do Not Add Certificates To Root Store +dotnet_diagnostic.CA5380.severity = error + +# Ensure Certificates Are Not Added To Root Store +dotnet_diagnostic.CA5381.severity = error + +# Use Secure Cookies In ASP.Net Core +dotnet_diagnostic.CA5382.severity = error + +# Ensure Use Secure Cookies In ASP.Net Core +dotnet_diagnostic.CA5383.severity = error + +# Do Not Use Digital Signature Algorithm (DSA) +dotnet_diagnostic.CA5384.severity = error + +# Use Rivest–Shamir–Adleman (RSA) Algorithm With Sufficient Key Size +dotnet_diagnostic.CA5385.severity = error + +# Avoid hardcoding SecurityProtocolType value +dotnet_diagnostic.CA5386.severity = error + +# Do Not Use Weak Key Derivation Function With Insufficient Iteration Count +dotnet_diagnostic.CA5387.severity = error + +# Ensure Sufficient Iteration Count When Using Weak Key Derivation Function +dotnet_diagnostic.CA5388.severity = error + +# Do Not Add Archive Item's Path To The Target File System Path +dotnet_diagnostic.CA5389.severity = error + +# Do not hard-code encryption key +dotnet_diagnostic.CA5390.severity = error + +# Use antiforgery tokens in ASP.NET Core MVC controllers +dotnet_diagnostic.CA5391.severity = error + +# Use DefaultDllImportSearchPaths attribute for P/Invokes +dotnet_diagnostic.CA5392.severity = error + +# Do not use unsafe DllImportSearchPath value +dotnet_diagnostic.CA5393.severity = error + +# Do not use insecure randomness +dotnet_diagnostic.CA5394.severity = error + +# Miss HttpVerb attribute for action methods +dotnet_diagnostic.CA5395.severity = error + +# Set HttpOnly to true for HttpCookie +dotnet_diagnostic.CA5396.severity = error + +# Do not use deprecated SslProtocols values +dotnet_diagnostic.CA5397.severity = error + +# Avoid hardcoded SslProtocols values +dotnet_diagnostic.CA5398.severity = error + +# HttpClients should enable certificate revocation list checks +dotnet_diagnostic.CA5399.severity = error + +# Ensure HttpClient certificate revocation list check is not disabled +dotnet_diagnostic.CA5400.severity = error + +# Do not use CreateEncryptor with non-default IV +dotnet_diagnostic.CA5401.severity = error + +# Use CreateEncryptor with the default IV +dotnet_diagnostic.CA5402.severity = error + +# Do not hard-code certificate +dotnet_diagnostic.CA5403.severity = error + +# Do not disable token validation checks +dotnet_diagnostic.CA5404.severity = error + +# Do not always skip token validation in delegates +dotnet_diagnostic.CA5405.severity = error + +# Usage ################################################################################################################################### + +# Review unused parameters +dotnet_diagnostic.CA1801.severity = warning + +# Call GC.SuppressFinalize correctly +dotnet_diagnostic.CA1816.severity = error + +# Rethrow to preserve stack details. +dotnet_diagnostic.CA2200.severity = error + +# Do not raise reserved exception types +dotnet_diagnostic.CA2201.severity = error + +# Initialize value type static fields inline +dotnet_diagnostic.CA2207.severity = error + +# Instantiate argument exceptions correctly +dotnet_diagnostic.CA2208.severity = error + +# Non-constant fields should not be visible +dotnet_diagnostic.CA2211.severity = error + +# Disposable fields should be disposed +dotnet_diagnostic.CA2213.severity = error + +# Do not call overridable methods in constructors +dotnet_diagnostic.CA2214.severity = error + +# Dispose methods should call base class dispose +dotnet_diagnostic.CA2215.severity = error + +# Disposable types should declare finalizer +dotnet_diagnostic.CA2216.severity = error + +# Do not mark enums with FlagsAttribute +dotnet_diagnostic.CA2217.severity = error + +# Override GetHashCode on overriding Equals +dotnet_diagnostic.CA2218.severity = error + +# Do not raise exceptions in exception clauses +dotnet_diagnostic.CA2219.severity = error + +# Override Equals on overloading operator equals +dotnet_diagnostic.CA2224.severity = error + +# Operator overloads have named alternates +dotnet_diagnostic.CA2225.severity = error + +# Operators should have symmetrical overloads +dotnet_diagnostic.CA2226.severity = error + +# Collection properties should be read only +dotnet_diagnostic.CA2227.severity = error + +# Implement serialization constructors +dotnet_diagnostic.CA2229.severity = error + +# Overload operator equals on overriding value type Equals +dotnet_diagnostic.CA2231.severity = error + +# Pass system uri objects instead of strings +dotnet_diagnostic.CA2234.severity = error + +# Mark all non-serializable fields +dotnet_diagnostic.CA2235.severity = error + +# Mark ISerializable types with serializable +dotnet_diagnostic.CA2237.severity = error + +# Provide correct arguments to formatting methods +dotnet_diagnostic.CA2241.severity = error + +# Test for NaN correctly +dotnet_diagnostic.CA2242.severity = error + +# Attribute string literals should parse correctly +dotnet_diagnostic.CA2243.severity = error + +# Do not duplicate indexed element initializations +dotnet_diagnostic.CA2244.severity = error + +# Do not assign a property to itself. +dotnet_diagnostic.CA2245.severity = error + +# Assigning symbol and its member in the same statement. +dotnet_diagnostic.CA2246.severity = error + +# Argument passed to TaskCompletionSource constructor should be TaskCreationOptions enum instead of TaskContinuationOptions enum +dotnet_diagnostic.CA2247.severity = error + +# Provide correct 'enum' argument to 'Enum.HasFlag' +dotnet_diagnostic.CA2248.severity = error + +# Consider using 'string.Contains' instead of 'string.IndexOf' +dotnet_diagnostic.CA2249.severity = error + +# Use ThrowIfCancellationRequested +dotnet_diagnostic.CA2250.severity = error + +# Use String.Equals over String.Compare +dotnet_diagnostic.CA2251.severity = error + +# Opt in to preview features before using them +dotnet_diagnostic.CA2252.severity = error + +# Named placeholders should not be numeric values +dotnet_diagnostic.CA2253.severity = error + +# Template should be a static expression +dotnet_diagnostic.CA2254.severity = error + +# The ModuleInitializer attribute should not be used in libraries +dotnet_diagnostic.CA2255.severity = error + +# All members declared in parent interfaces must have an implementation in a DynamicInterfaceCastableImplementation-attributed interface +dotnet_diagnostic.CA2256.severity = error + +# Members defined on an interface with the 'DynamicInterfaceCastableImplementationAttribute' should be 'static' +dotnet_diagnostic.CA2257.severity = error + +# Providing a 'DynamicInterfaceCastableImplementation' interface in Visual Basic is unsupported +dotnet_diagnostic.CA2258.severity = error + +# Ensure ThreadStatic is only used with static fields +dotnet_diagnostic.CA2259.severity = error + +# Implement generic math interfaces correctly +dotnet_diagnostic.CA2260.severity = error + +# Do not use ConfigureAwaitOptions.SuppressThrowing with Task +dotnet_diagnostic.CA2261.severity = error + +# Others ################################################################################################################################## + +# Analyzer version mismatch +dotnet_diagnostic.CA9999.severity = warning + +########################################################################################################################################### +# Microsoft.VisualStudio.Threading.Analyzers # +# https://github.com/microsoft/vs-threading/blob/main/doc/analyzers/index.md # +########################################################################################################################################### + +# Avoid legacy thread switching methods +dotnet_diagnostic.VSTHRD001.severity = error + +# Avoid problematic synchronous waits +dotnet_diagnostic.VSTHRD002.severity = error + +# Avoid awaiting foreign Tasks +dotnet_diagnostic.VSTHRD003.severity = error + +# Await SwitchToMainThreadAsync +dotnet_diagnostic.VSTHRD004.severity = error + +# Invoke single-threaded types on Main thread +dotnet_diagnostic.VSTHRD010.severity = error + +# Use AsyncLazy +dotnet_diagnostic.VSTHRD011.severity = error + +# Provide JoinableTaskFactory where allowed +dotnet_diagnostic.VSTHRD012.severity = error + +# Avoid async void methods +dotnet_diagnostic.VSTHRD100.severity = error + +# Avoid unsupported async delegates +dotnet_diagnostic.VSTHRD101.severity = error + +# Implement internal logic asynchronously +dotnet_diagnostic.VSTHRD102.severity = error + +# Call async methods when in an async method +dotnet_diagnostic.VSTHRD103.severity = error + +# Offer async option +dotnet_diagnostic.VSTHRD104.severity = error + +# Avoid method overloads that assume TaskScheduler.Current +dotnet_diagnostic.VSTHRD105.severity = error + +# Use InvokeAsync to raise async events +dotnet_diagnostic.VSTHRD106.severity = error + +# Await Task within using expression +dotnet_diagnostic.VSTHRD107.severity = error + +# Assert thread affinity unconditionally +dotnet_diagnostic.VSTHRD108.severity = error + +# Switch instead of assert in async methods +dotnet_diagnostic.VSTHRD109.severity = error + +# Observe result of async calls +dotnet_diagnostic.VSTHRD110.severity = error + +# Use .ConfigureAwait(bool) +# - Configured by CA2007 +dotnet_diagnostic.VSTHRD111.severity = none + +# Implement System.IAsyncDisposable +dotnet_diagnostic.VSTHRD112.severity = error + +# Check for System.IAsyncDisposable +dotnet_diagnostic.VSTHRD113.severity = error + +# Avoid returning null from a Task-returning method. +dotnet_diagnostic.VSTHRD114.severity = error + +# Use Async naming convention +# - Configured by Naming Conventions +dotnet_diagnostic.VSTHRD200.severity = none + +########################################################################################################################################### +# StyleCop # +# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/DOCUMENTATION.md # +########################################################################################################################################### + +# Intentionally disabled rules: +# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/KnownChanges.md#disabled-rules + +[*.cs] + +# Special Rules ########################################################################################################################### + +# All diagnostics of XML documentation comments has been disabled due to the current project configuration. +dotnet_diagnostic.SA0001.severity = none + +# The **stylecop.json** settings file could not be loaded due to a deserialization error. +dotnet_diagnostic.SA0002.severity = warning + +# Spacing Rules ########################################################################################################################### + +# The spacing around a C# keyword is incorrect. +# - Configured by Visual Studio +dotnet_diagnostic.SA1000.severity = none + +# The spacing around a comma is incorrect, within a C# code file. +# - Configured by Visual Studio +dotnet_diagnostic.SA1001.severity = none + +# The spacing around a semicolon is incorrect, within a C# code file. +# - Configured by Visual Studio +dotnet_diagnostic.SA1002.severity = none + +# The spacing around an operator symbol is incorrect, within a C# code file. +# - Configured by Visual Studio +dotnet_diagnostic.SA1003.severity = none + +# A line within a documentation header above a C# element does not begin with a single space. +dotnet_diagnostic.SA1004.severity = warning + +# A single-line comment within a C# code file does not begin with a single space. +dotnet_diagnostic.SA1005.severity = warning + +# A C# preprocessor-type keyword is preceded by space. +dotnet_diagnostic.SA1006.severity = warning + +# The operator keyword within a C# operator overload method is not followed by any whitespace. +# - Configured by Visual Studio +dotnet_diagnostic.SA1007.severity = none + +# An opening parenthesis within a C# statement is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1008.severity = none + +# A closing parenthesis within a C# statement is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1009.severity = none + +# An opening square bracket within a C# statement is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1010.severity = none + +# A closing square bracket within a C# statement is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1011.severity = none + +# An opening brace within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1012.severity = none + +# A closing brace within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1013.severity = none + +# An opening generic bracket within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1014.severity = none + +# A closing generic bracket within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1015.severity = none + +# An opening attribute bracket within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1016.severity = none + +# A closing attribute bracket within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1017.severity = none + +# A nullable type symbol within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1018.severity = none + +# The spacing around a member access symbol is incorrect, within a C# code file. +# - Configured by Visual Studio +dotnet_diagnostic.SA1019.severity = none + +# An increment or decrement symbol within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1020.severity = none + +# A negative sign within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1021.severity = none + +# A positive sign within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1022.severity = none + +# A dereference symbol or an access-of symbol within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1023.severity = none + +# A colon within a C# element is not spaced correctly. +# - Configured by Visual Studio +dotnet_diagnostic.SA1024.severity = none + +# The code contains multiple whitespace characters in a row. +dotnet_diagnostic.SA1025.severity = warning + +# An implicitly typed new array allocation within a C# code file is not spaced correctly. +dotnet_diagnostic.SA1026.severity = warning + +# The code contains a tab or space character which is not consistent with the current project settings. +dotnet_diagnostic.SA1027.severity = warning + +# A line of code ends with a space, tab, or other whitespace characters before the end of line character(s). +# - Configured by Visual Studio +dotnet_diagnostic.SA1028.severity = none + +# Readability Rules ####################################################################################################################### + +# A call to a member from an inherited class begins with `base.`, and the local class does not contain an override or implementation of the +# member. +dotnet_diagnostic.SA1100.severity = warning + +# A call to an instance member of the local class or a base class is not prefixed with 'this.', within a C# code file. +# - Configured by Visual Studio +dotnet_diagnostic.SA1101.severity = none + +# A C# query clause does not begin on the same line as the previous clause, or on the next line. +dotnet_diagnostic.SA1102.severity = warning + +# The clauses within a C# query expression are not all placed on the same line, and each clause is not placed on its own line. +dotnet_diagnostic.SA1103.severity = warning + +# A clause within a C# query expression begins on the same line as the previous clause, when the previous clause spans across multiple +# lines. +dotnet_diagnostic.SA1104.severity = warning + +# A clause within a C# query expression spans across multiple lines, and does not begin on its own line. +dotnet_diagnostic.SA1105.severity = warning + +# The C# code contains an extra semicolon. +dotnet_diagnostic.SA1106.severity = warning + +# The C# code contains more than one statement on a single line. +dotnet_diagnostic.SA1107.severity = warning + +# A C# statement contains a comment between the declaration of the statement and the opening brace of the statement. +dotnet_diagnostic.SA1108.severity = warning + +# A C# statement contains a region tag between the declaration of the statement and the opening brace of the statement. +# Intentionally disabled by StyleCop +dotnet_diagnostic.SA1109.severity = none + +# The opening parenthesis or bracket in a call to a C# method or indexer, or the declaration of a method or indexer, is not placed on the +# same line as the method or indexer name +dotnet_diagnostic.SA1110.severity = warning + +# The closing parenthesis or bracket in a call to a C# method or indexer, or the declaration of a method or indexer, is not placed on the +# same line as the last parameter. +dotnet_diagnostic.SA1111.severity = warning + +# The closing parenthesis or bracket in a call to a C# method or indexer, or the declaration of a method or indexer, is not placed on the +# same line as the opening bracket when the element does not take any parameters. +dotnet_diagnostic.SA1112.severity = warning + +# A comma between two parameters in a call to a C# method or indexer, or in the declaration of a method or indexer, is not placed on the +# same line as the previous parameter. +dotnet_diagnostic.SA1113.severity = warning + +# The start of the parameter list for a method or indexer call or declaration does not begin on the same line as the opening bracket, or on +# the line after the opening bracket. +dotnet_diagnostic.SA1114.severity = warning + +# A parameter within a C# method or indexer call or declaration does not begin on the same line as the previous parameter, or on the next +# line. +dotnet_diagnostic.SA1115.severity = warning + +# The parameters to a C# method or indexer call or declaration span across multiple lines, but the first parameter does not start on the +# line after the opening bracket. +dotnet_diagnostic.SA1116.severity = warning + +# The parameters to a C# method or indexer call or declaration are not all on the same line or each on a separate line. +dotnet_diagnostic.SA1117.severity = warning + +# A parameter to a C# method or indexer, other than the first parameter, spans across multiple lines. +dotnet_diagnostic.SA1118.severity = warning + +# The C# comment does not contain any comment text. +dotnet_diagnostic.SA1120.severity = warning + +# The code uses one of the basic C# types, but does not use the built-in alias for the type. +# - Configurd by Visual Studio +dotnet_diagnostic.SA1121.severity = none + +# The C# code includes an empty string, written as `""`. +dotnet_diagnostic.SA1122.severity = warning + +# The C# code contains a region within the body of a code element. +# - Covered by SA1124 +dotnet_diagnostic.SA1123.severity = none + +# The C# code contains a region. +dotnet_diagnostic.SA1124.severity = warning + +# The Nullable type has been defined not using the C# shorthand +dotnet_diagnostic.SA1125.severity = warning + +# A call to a member is not prefixed with the 'this.', 'base.', 'object.' or 'typename.' prefix to indicate the intended method call, +# within a C# code file. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1126.severity = none + +# A generic constraint on a type or method declaration is on the same line as the declaration, within a C# code file. +dotnet_diagnostic.SA1127.severity = warning + +# A constructor initializer is on the same line as the constructor declaration, within a C# code file. +dotnet_diagnostic.SA1128.severity = warning + +# A value type was constructed using the syntax `new T()`. +dotnet_diagnostic.SA1129.severity = warning + +# An anonymous method was declared using the form `delegate (parameters) { }`, when a lambda expression would provide equivalent behavior +# with the syntax `(parameters) => { }` +dotnet_diagnostic.SA1130.severity = warning + +# A comparison was made between a variable and a literal or constant value, and the variable appeared on the right-hand side of the +# expression +dotnet_diagnostic.SA1131.severity = warning + +# Two or more fields were declared in the same field declaration syntax. +dotnet_diagnostic.SA1132.severity = warning + +# Two or more attributes appeared within the same set of square brackets. +dotnet_diagnostic.SA1133.severity = warning + +# An attribute is placed on the same line of code as another attribute or element. +dotnet_diagnostic.SA1134.severity = warning + +# A using directive is not qualified +dotnet_diagnostic.SA1135.severity = warning + +# Multiple enum values are placed on the same line of code. +dotnet_diagnostic.SA1136.severity = warning + +# Two sibling elements which each start on their own line have different levels of indentation +dotnet_diagnostic.SA1137.severity = warning + +# Use literal suffix notation instead of casting. +dotnet_diagnostic.SA1139.severity = warning + +# Use tuple syntax instead of the underlying ValueTuple implementation type +dotnet_diagnostic.SA1141.severity = warning + +# An element of a tuple was referenced by its metadata name when an element name is available +dotnet_diagnostic.SA1142.severity = warning + +# Ordering Rules ########################################################################################################################## + +# A C# using directive is placed inside of a namespace element. +# - Configured by Visual Studio +dotnet_diagnostic.SA1200.severity = none + +# An element within a C# code file is out of order in relation to the other elements in the code. +dotnet_diagnostic.SA1201.severity = warning + +# An element within a C# code file is out of order within regard to access level, in relation to other elements in the code +dotnet_diagnostic.SA1202.severity = none + +# A constant field is placed beneath a non-constant field. +dotnet_diagnostic.SA1203.severity = warning + +# A static element is positioned beneath an instance element of the same type. +dotnet_diagnostic.SA1204.severity = none + +# The partial element does not have an access modifier defined. +dotnet_diagnostic.SA1205.severity = warning + +# The keywords within the declaration of an element do not follow a standard ordering scheme. +# - Configured by Visual Studio +dotnet_diagnostic.SA1206.severity = none + +# The keyword *protected* is positioned after the keyword *internal* within the declaration of a protected internal C# element. +# - Configured by Visual Studio +dotnet_diagnostic.SA1207.severity = none + +# A using directive which declares a member of the *System* namespace appears after a using directive which declares a member of a +# different namespace, within a C# code file. +# - Configured by Visual Studio +dotnet_diagnostic.SA1208.severity = none + +# A using-alias directive is positioned before a regular using directive. +dotnet_diagnostic.SA1209.severity = warning + +# The using directives within a C# code file are not sorted alphabetically by namespace. +dotnet_diagnostic.SA1210.severity = warning + +# The using-alias directives within a C# code file are not sorted alphabetically by alias name. +dotnet_diagnostic.SA1211.severity = warning + +# A get accessor appears after a set accessor within a property or indexer. +dotnet_diagnostic.SA1212.severity = warning + +# An add accessor appears after a remove accessor within an event. +dotnet_diagnostic.SA1213.severity = warning + +# A readonly field is positioned beneath a non-readonly field. +dotnet_diagnostic.SA1214.severity = none + +# An instance readonly element is positioned beneath an instance non-readonly element of the same type. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1215.severity = none + +# A `using static` directive is positioned at the wrong location (before a regular using directive or after an alias using directive). +dotnet_diagnostic.SA1216.severity = warning + +# The `using static` directives within a C# code file are not sorted alphabetically by full type name. +dotnet_diagnostic.SA1217.severity = warning + +# Naming Rules ############################################################################################################################ + +# The name of a C# element does not begin with an upper-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1300.severity = none + +# There are currently no situations in which this rule will fire. +dotnet_diagnostic.SA1301.severity = none + +# The name of a C# interface does not begin with the capital letter I. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1302.severity = none + +# The name of a constant C# field should begin with an upper-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1303.severity = none + +# The name of a non-private readonly C# field should being with an upper-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1304.severity = none + +# The name of a field or variable in C# uses Hungarian notation. +# - This rule just disallows names with a 2 or less characters segment at the beginning (z.B. "saUsa" => Violation) +dotnet_diagnostic.SA1305.severity = none + +# The name of a field in C# does not begin with a lower-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1306.severity = none + +# The name of a public or internal field in C# does not begin with an upper-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1307.severity = none + +# A field name in C# is prefixed with *m_* or *s_*. +# - Configured by Visual Studio +dotnet_diagnostic.SA1308.severity = none + +# A field name in C# begins with an underscore. +# - Configured by Visual Studio +dotnet_diagnostic.SA1309.severity = none + +# A field name in C# contains an underscore. +dotnet_diagnostic.SA1310.severity = warning + +# The name of a static readonly field does not begin with an upper-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1311.severity = none + +# The name of a variable in C# does not begin with a lower-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1312.severity = none + +# The name of a parameter in C# does not begin with a lower-case letter. +# - Configured by Naming Conventions +dotnet_diagnostic.SA1313.severity = none + +# The name of a C# type parameter does not begin with the capital letter T +# - Configured by Naming Conventions +dotnet_diagnostic.SA1314.severity = none + +# Element names within a tuple type should have the correct casing +dotnet_diagnostic.SA1316.severity = warning + +# Maintainability ######################################################################################################################### + +# A C# statement contains parenthesis which are unnecessary and should be removed. +# - Configured by Visual Studio +dotnet_diagnostic.SA1119.severity = none + +# The access modifier for a C# element has not been explicitly defined. +# - Configured by Visual Studio +dotnet_diagnostic.SA1400.severity = none + +# A field within a C# class has an access modifier other than private. +# - Configured by CA1051 +dotnet_diagnostic.SA1401.severity = none + +# A C# code file contains more than one unique type. +dotnet_diagnostic.SA1402.severity = warning + +# A C# code file contains more than one namespace. +dotnet_diagnostic.SA1403.severity = warning + +# A Code Analysis SuppressMessage attribute does not include a justification. +dotnet_diagnostic.SA1404.severity = warning + +# A call to Debug.Assert in C# code does not include a descriptive message. +dotnet_diagnostic.SA1405.severity = warning + +# A call to Debug.Fail in C# code does not include a descriptive message. +dotnet_diagnostic.SA1406.severity = warning + +# A C# statement contains a complex arithmetic expression which omits parenthesis around operators. +# - Configured by Visual Studio +dotnet_diagnostic.SA1407.severity = none + +# A C# statement contains a complex conditional expression which omits parenthesis around operators. +# - Configured by Visual Studio +dotnet_diagnostic.SA1408.severity = none + +# A C# file contains code which is unnecessary and can be removed without changing the overall logic of the code. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1409.severity = none + +# A call to a C# anonymous method does not contain any method parameters, yet the statement still includes parenthesis. +dotnet_diagnostic.SA1410.severity = warning + +# An attribute declaration does not contain any parameters, yet it still includes parenthesis. +dotnet_diagnostic.SA1411.severity = warning + +# The encoding of the file is not UTF-8 with byte order mark. +dotnet_diagnostic.SA1412.severity = none + +# A multi-line initializer should use a comma on the last item. +dotnet_diagnostic.SA1413.severity = warning + +# Tuple types appearing in member declarations should have explicitly named tuple elements +dotnet_diagnostic.SA1414.severity = warning + +# Layout Rules ############################################################################################################################ + +# The opening or closing brace within a C# statement, element, or expression is not placed on its own line. +# - Configured by Visual Studio, but not in Error List +dotnet_diagnostic.SA1500.severity = warning + +# A C# statement containing opening and closing braces is written completely on a single line. +# - Configured by Visual Studio, but not in Error List +dotnet_diagnostic.SA1501.severity = warning + +# A C# element containing opening and closing braces is written completely on a single line. +# - Configured by Visual Studio, but not in Error List +dotnet_diagnostic.SA1502.severity = warning + +# The opening and closing braces for a C# statement have been omitted. +# - Configured by Visual Studio +dotnet_diagnostic.SA1503.severity = none + +# Within a C# property, indexer or event, at least one of the child accessors is written on a single line, and at least one of the child +# accessors is written across multiple lines. +dotnet_diagnostic.SA1504.severity = warning + +# An opening brace within a C# element, statement, or expression is followed by a blank line. +dotnet_diagnostic.SA1505.severity = warning + +# An element documentation header above a C# element is followed by a blank line. +dotnet_diagnostic.SA1506.severity = warning + +# The C# code contains multiple blank lines in a row. +dotnet_diagnostic.SA1507.severity = warning + +# A closing brace within a C# element, statement, or expression is preceded by a blank line. +dotnet_diagnostic.SA1508.severity = warning + +# An opening brace within a C# element, statement, or expression is preceded by a blank line. +dotnet_diagnostic.SA1509.severity = warning + +# Chained C# statements are separated by a blank line. +dotnet_diagnostic.SA1510.severity = warning + +# The while footer at the bottom of a do-while statement is separated from the statement by a blank line. +dotnet_diagnostic.SA1511.severity = warning + +# A single-line comment within C# code is followed by a blank line. +dotnet_diagnostic.SA1512.severity = warning + +# A closing brace within a C# element, statement, or expression is not followed by a blank line. +dotnet_diagnostic.SA1513.severity = warning + +# An element documentation header above a C# element is not preceded by a blank line. +dotnet_diagnostic.SA1514.severity = warning + +# A single-line comment within C# code is not preceded by a blank line. +dotnet_diagnostic.SA1515.severity = warning + +# Adjacent C# elements are not separated by a blank line. +dotnet_diagnostic.SA1516.severity = warning + +# The code file has blank lines at the start. +dotnet_diagnostic.SA1517.severity = warning + +# The line endings at the end of a file do not match the settings for the project. +dotnet_diagnostic.SA1518.severity = warning + +# The opening and closing braces for a multi-line C# statement have been omitted. +# - Configured by Visual Studio +dotnet_diagnostic.SA1519.severity = none + +# The opening and closing braces of a chained `if`/`else if`/`else` construct were included for some clauses, but omitted for others +# - Configured by Visual Studio +dotnet_diagnostic.SA1520.severity = none + +# Documentation Rules ##################################################################################################################### + +# A C# code element is missing a documentation header. +dotnet_diagnostic.SA1600.severity = none + +# A C# partial element is missing a documentation header. +dotnet_diagnostic.SA1601.severity = none + +# An item within a C# enumeration is missing an Xml documentation header. +dotnet_diagnostic.SA1602.severity = none + +# The Xml within a C# element's document header is badly formed. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1603.severity = none + +# The Xml header documentation for a C# element is missing a `` tag. +dotnet_diagnostic.SA1604.severity = warning + +# The `` or `` tag within the documentation header for a C# code element is missing or empty. +dotnet_diagnostic.SA1605.severity = warning + +# The `` tag within the documentation header for a C# code element is empty. +dotnet_diagnostic.SA1606.severity = warning + +# The `` or `` tag within the documentation header for a C# code element is empty. +dotnet_diagnostic.SA1607.severity = warning + +# The `` tag within an element's Xml header documentation contains the default text generated by Visual Studio during the creation +# of the element. +dotnet_diagnostic.SA1608.severity = warning + +# The Xml header documentation for a C# property does not contain a `` tag. +dotnet_diagnostic.SA1609.severity = warning + +# The Xml header documentation for a C# property contains an empty `` tag. +dotnet_diagnostic.SA1610.severity = warning + +# A C# method, constructor, delegate or indexer element is missing documentation for one or more of its parameters. +dotnet_diagnostic.SA1611.severity = warning + +# The documentation describing the parameters to a C# method, constructor, delegate or indexer element does not match the actual parameters +# on the element. +dotnet_diagnostic.SA1612.severity = warning + +# A `` tag within a C# element's documentation header is missing a name attribute containing the name of the parameter. +dotnet_diagnostic.SA1613.severity = warning + +# A `` tag within a C# element's documentation header is empty. +dotnet_diagnostic.SA1614.severity = warning + +# A C# element is missing documentation for its return value. +dotnet_diagnostic.SA1615.severity = warning + +# The `` tag within a C# element's documentation header is empty. +dotnet_diagnostic.SA1616.severity = warning + +# A C# code element does not contain a return value, or returns void, but the documentation header for the element contains a `` +# tag. +dotnet_diagnostic.SA1617.severity = warning + +# A generic C# element is missing documentation for one or more of its generic type parameters. +dotnet_diagnostic.SA1618.severity = warning + +# A generic, partial C# element is missing documentation for one or more of its generic type parameters, and the documentation for the +# element contains a `` tag. +dotnet_diagnostic.SA1619.severity = warning + +# The `` tags within the Xml header documentation for a generic C# element do not match the generic type parameters on the element. +dotnet_diagnostic.SA1620.severity = warning + +# A `` tag within the Xml header documentation for a generic C# element is missing a name attribute, or contains an empty name +# attribute. +dotnet_diagnostic.SA1621.severity = warning + +# A `` tag within the Xml header documentation for a generic C# element is empty. +dotnet_diagnostic.SA1622.severity = warning + +# The documentation text within a C# property's `` tag does not match the accessors within the property. +dotnet_diagnostic.SA1623.severity = warning + +# The documentation text within a C# property's `` tag takes into account all of the accessors within the property, but one of the +# accessors has limited access. +dotnet_diagnostic.SA1624.severity = warning + +# The Xml documentation for a C# element contains two or more identical entries, indicating that the documentation has been copied and +# pasted +dotnet_diagnostic.SA1625.severity = warning + +# The C# code contains a single-line comment which begins with three forward slashes in a row. +dotnet_diagnostic.SA1626.severity = warning + +# The Xml header documentation for a C# code element contains an empty tag. +dotnet_diagnostic.SA1627.severity = warning + +# A section of the Xml header documentation for a C# element does not begin with a capital letter. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1628.severity = none + +# A section of the Xml header documentation for a C# element does not end with a period (also known as a full stop). +dotnet_diagnostic.SA1629.severity = warning + +# A section of the Xml header documentation for a C# element does not contain any whitespace between words. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1630.severity = none + +# A section of the Xml header documentation for a C# element does not contain enough alphabetic characters. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1631.severity = none + +# From StyleCop 4.5 this rule is disabled by default. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1632.severity = none + +# A C# code file is missing a standard file header. +dotnet_diagnostic.SA1633.severity = none + +# The file header at the top of a C# code file is missing a copyright tag. +dotnet_diagnostic.SA1634.severity = warning + +# The file header at the top of a C# code file is missing copyright text. +dotnet_diagnostic.SA1635.severity = warning + +# The file header at the top of a C# code file does not contain the appropriate copyright text. +dotnet_diagnostic.SA1636.severity = warning + +# The file header at the top of a C# code file is missing the file name. +dotnet_diagnostic.SA1637.severity = warning + +# The file tag within the file header at the top of a C# code file does not contain the name of the file. +dotnet_diagnostic.SA1638.severity = warning + +# The file header at the top of a C# code file does not contain a filled-in summary tag. +dotnet_diagnostic.SA1639.severity = warning + +# The file header at the top of a C# code file does not contain company name text. +dotnet_diagnostic.SA1640.severity = warning + +# The file header at the top of a C# code file does not contain the appropriate company name text. +dotnet_diagnostic.SA1641.severity = warning + +# The XML documentation header for a C# constructor does not contain the appropriate summary text. +dotnet_diagnostic.SA1642.severity = warning + +# The Xml documentation header for a C# finalizer does not contain the appropriate summary text. +dotnet_diagnostic.SA1643.severity = warning + +# A section within the Xml documentation header for a C# element contains blank lines. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1644.severity = none + +# An included Xml documentation file does not exist. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1645.severity = none + +# An included Xml documentation link contains an invalid path. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1646.severity = none + +# An include tag within an Xml documentation header does not contain valid file and path attribute. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1647.severity = none + +# `` has been used on an element that doesn't inherit from a base class or implement an interface. +dotnet_diagnostic.SA1648.severity = warning + +# The file name of a C# code file does not match the first type declared in the file. +dotnet_diagnostic.SA1649.severity = warning + +# The element documentation for the element contains one or more spelling mistakes or unrecognized words. +# - Intentionally disabled by StyleCop +dotnet_diagnostic.SA1650.severity = none + +# The documentation for the element contains one or more `` elements. +dotnet_diagnostic.SA1651.severity = warning + +# Alternative Rules ####################################################################################################################### + +# A call to an instance member of the local class or a base class is prefixed with 'this.', within a C# code file. +# - Conflicts with SA1101 +dotnet_diagnostic.SX1101.severity = none + +# A field name does not begin with an underscore. +# - Configured by Coding Conventions +dotnet_diagnostic.SX1309.severity = none + +# A static field name does not begin with an underscore. +# - Configured by Coding Conventions +dotnet_diagnostic.SX1309S.severity = none + +########################################################################################################################################### +# Roslynator # +# https://github.com/JosefPihrt/Roslynator # +########################################################################################################################################### + +########################################################################################################################################### +# Roslynator Analyzers # +# https://github.com/JosefPihrt/Roslynator/blob/master/src/Analyzers/README.md # +########################################################################################################################################### + +[*.cs] + +# Add braces (when expression spans over multiple lines) +# - Conflicts with RCS1007 +dotnet_diagnostic.RCS1001.severity = none + +# Remove braces +# - Conflicts with RCS1007 +dotnet_diagnostic.RCS1002.severity = none + +# Add braces to if-else (when expression spans over multiple lines) +# - Conflicts with RCS1007 +dotnet_diagnostic.RCS1003.severity = none + +# Remove braces from if-else +# - Conflicts with RCS1007 +dotnet_diagnostic.RCS1004.severity = none + +# Simplify nested using statement +dotnet_diagnostic.RCS1005.severity = warning + +# Merge else clause with nested if statement +dotnet_diagnostic.RCS1006.severity = warning + +# Add braces +# - Configured by Visual Studio +dotnet_diagnostic.RCS1007.severity = none + +# Use explicit type instead of 'var' (when the type is not obvious) +# - Configured in Visual Studio +dotnet_diagnostic.RCS1008.severity = none + +# Use explicit type instead of 'var' (foreach variable) +# - Configured in Visual Studio +dotnet_diagnostic.RCS1009.severity = none + +# Use 'var' instead of explicit type (when the type is obvious) +# - Configured in Visual Studio +dotnet_diagnostic.RCS1010.severity = none + +# Use explicit type instead of 'var' (when the type is obvious) +# - Configured in Visual Studio +dotnet_diagnostic.RCS1012.severity = none + +# Use predefined type +# - Configured in Visual Studio +dotnet_diagnostic.RCS1013.severity = none + +# Use explicitly/implicitly typed array +dotnet_diagnostic.RCS1014.severity = warning +roslynator_array_creation_type_style = explicit + +# Use nameof operator +# - Configured by CA1507 +dotnet_diagnostic.RCS1015.severity = none + +# Use expression-bodied member +# - Configured by Visual Studio +dotnet_diagnostic.RCS1016.severity = none + +# Add accessibility modifiers +# - Configured by Visual Studio +dotnet_diagnostic.RCS1018.severity = none +roslynator_accessibility_modifiers = explicit + +# Order modifiers +# - Configured by Visual Studio +dotnet_diagnostic.RCS1019.severity = none + +# Simplify Nullable to T? +# - Configured by SA1125 +dotnet_diagnostic.RCS1020.severity = none + +# Simplify lambda expression +# - Configured by Visual Studio +dotnet_diagnostic.RCS1021.severity = none + +# Remove unnecessary braces +# - Configured by Visual Studio +dotnet_diagnostic.RCS1031.severity = none + +# Remove redundant parentheses +# - Configured by Visual Studio +dotnet_diagnostic.RCS1032.severity = none + +# Remove redundant boolean literal +dotnet_diagnostic.RCS1033.severity = warning + +# Remove redundant 'sealed' modifier +dotnet_diagnostic.RCS1034.severity = warning + +# Remove redundant empty line +# - Configured by SA1507 +dotnet_diagnostic.RCS1036.severity = none + +# Remove trailing white-space +# - Configured by SA1028 +dotnet_diagnostic.RCS1037.severity = none + +# Remove argument list from attribute +# - Configured by SA1411 +dotnet_diagnostic.RCS1039.severity = none + +# Remove enum default underlying type +dotnet_diagnostic.RCS1042.severity = warning + +# Remove 'partial' modifier from type with a single part +dotnet_diagnostic.RCS1043.severity = warning + +# Remove original exception from throw statement +# - Configured by C# +dotnet_diagnostic.RCS1044.severity = none + +# Asynchronous method name should end with 'Async' +# - Configured by Coding Conventions +dotnet_diagnostic.RCS1046.severity = none + +# Non-asynchronous method name should not end with 'Async' +dotnet_diagnostic.RCS1047.severity = warning + +# Use lambda expression instead of anonymous method +dotnet_diagnostic.RCS1048.severity = error + +# Simplify boolean comparison +dotnet_diagnostic.RCS1049.severity = warning + +# Add argument list to object creation expression +dotnet_diagnostic.RCS1050.severity = warning +roslynator_object_creation_parentheses_style = include + +# Parenthesize condition in conditional expression +# - Configured by Visual studio +dotnet_diagnostic.RCS1051.severity = none + +# Declare each attribute separately +# - Configured by SA1133 +dotnet_diagnostic.RCS1052.severity = none + +# Avoid semicolon at the end of declaration +dotnet_diagnostic.RCS1055.severity = warning + +# Avoid usage of using alias directive +dotnet_diagnostic.RCS1056.severity = warning + +# Use compound assignment +# - Configured by Visual Studio +dotnet_diagnostic.RCS1058.severity = none + +# Avoid locking on publicly accessible instance +dotnet_diagnostic.RCS1059.severity = error + +# Declare each type in separate file +# - Configured by SA1402 +dotnet_diagnostic.RCS1060.severity = none + +# Merge if statement with nested if statement +dotnet_diagnostic.RCS1061.severity = warning + +# Simplify logical negation +dotnet_diagnostic.RCS1068.severity = warning + +# Remove unnecessary case label +dotnet_diagnostic.RCS1069.severity = warning + +# Remove redundant default switch section +dotnet_diagnostic.RCS1070.severity = warning + +# Remove redundant base constructor call +dotnet_diagnostic.RCS1071.severity = warning + +# Convert 'if' to 'return' statement +# - Configured by Visual Studio +dotnet_diagnostic.RCS1073.severity = none + +# Remove redundant constructor +dotnet_diagnostic.RCS1074.severity = warning + +# Avoid empty catch clause that catches System.Exception +dotnet_diagnostic.RCS1075.severity = error + +# Optimize LINQ method call +dotnet_diagnostic.RCS1077.severity = error + +# Use "" instead of string.Empty +# - Configured by SA1122 +dotnet_diagnostic.RCS1078.severity = none + +# Throwing of new NotImplementedException +dotnet_diagnostic.RCS1079.severity = none + +# Use 'Count/Length' property instead of 'Any' method +# Intentionally disabled by Roslynator +# - Configured by CA1829 +dotnet_diagnostic.RCS1080.severity = none + +# Split variable declaration +# - Configured by SA1132 +dotnet_diagnostic.RCS1081.severity = none + +# Use coalesce expression instead of conditional expression +# - Configured by Visual Studio +dotnet_diagnostic.RCS1084.severity = none + +# Use auto-implemented property +# - Configured by Visual Studio +dotnet_diagnostic.RCS1085.severity = none + +# Use --/++ operator instead of assignment +dotnet_diagnostic.RCS1089.severity = warning + +# Call 'ConfigureAwait(false)' +# - Configured by CA2007 +dotnet_diagnostic.RCS1090.severity = none + +# Remove file with no code +dotnet_diagnostic.RCS1093.severity = warning + +# Declare using directive on top level +# - Configured by SA1200 +dotnet_diagnostic.RCS1094.severity = none + +# Use 'HasFlag' method or bitwise operator +dotnet_diagnostic.RCS1096.severity = error +roslynator_enum_has_flag_style = operator + +# Remove redundant 'ToString' call +dotnet_diagnostic.RCS1097.severity = warning + +# Avoid 'null' on the left side of a binary expression +dotnet_diagnostic.RCS1098.severity = warning + +# Default label should be the last label in a switch section +dotnet_diagnostic.RCS1099.severity = warning + +# Make class static +# - Configured by C# +dotnet_diagnostic.RCS1102.severity = none + +# Convert 'if' to assignment +dotnet_diagnostic.RCS1103.severity = warning + +# Simplify conditional expression +dotnet_diagnostic.RCS1104.severity = warning +roslynator.RCS1104.suppress_when_condition_is_inverted = false + +# Unncessary interpolation +dotnet_diagnostic.RCS1105.severity = warning + +# Remove redundant 'ToCharArray' call +dotnet_diagnostic.RCS1107.severity = warning + +# Add 'static' modifier to all partial class declarations +dotnet_diagnostic.RCS1108.severity = warning + +# Declare type inside namespace +# - Configured by CA1050 +dotnet_diagnostic.RCS1110.severity = none + +# Add braces to switch section with multiple statements +dotnet_diagnostic.RCS1111.severity = warning + +# Combine 'Enumerable.Where' method chain +dotnet_diagnostic.RCS1112.severity = warning + +# Use 'string.IsNullOrEmpty' method +dotnet_diagnostic.RCS1113.severity = error + +# Remove redundant delegate creation +dotnet_diagnostic.RCS1114.severity = warning + +# Mark local variable as const +dotnet_diagnostic.RCS1118.severity = error + +# Add parentheses according to operator precedence +# - Configured by Visual Studio +dotnet_diagnostic.RCS1123.severity = none + +# Inline local variable +dotnet_diagnostic.RCS1124.severity = warning + +# Add braces to if-else +# - Configured by Visual Studio +dotnet_diagnostic.RCS1126.severity = none + +# Use coalesce expression +# - Configured by Visual Studio +dotnet_diagnostic.RCS1128.severity = none + +# Remove redundant field initalization +dotnet_diagnostic.RCS1129.severity = warning + +# Bitwise operation on enum without Flags attribute +dotnet_diagnostic.RCS1130.severity = error + +# Remove redundant overriding member +dotnet_diagnostic.RCS1132.severity = warning + +# Remove redundant Dispose/Close call +dotnet_diagnostic.RCS1133.severity = warning + +# Remove redundant statement +dotnet_diagnostic.RCS1134.severity = warning + +# Declare enum member with zero value (when enum has FlagsAttribute) +dotnet_diagnostic.RCS1135.severity = error + +# Merge switch sections with equivalent content +dotnet_diagnostic.RCS1136.severity = warning + +# Add summary to documentation comment +# - Configured by SA1604 +dotnet_diagnostic.RCS1138.severity = none + +# Add summary element to documentation comment +# - Configured by SA1604 +dotnet_diagnostic.RCS1139.severity = none + +# Add exception to documentation comment +dotnet_diagnostic.RCS1140.severity = warning + +# Add 'param' element to documentation comment +# Configured by SA1611 +dotnet_diagnostic.RCS1141.severity = none + +# Add 'typeparam' element to documentation comment +# - Configured by SA1622 +dotnet_diagnostic.RCS1142.severity = none + +# Simplify coalesce expression +dotnet_diagnostic.RCS1143.severity = warning + +# Remove redundant 'as' operator +dotnet_diagnostic.RCS1145.severity = warning + +# Use conditional access +dotnet_diagnostic.RCS1146.severity = error + +# Remove redundant cast +dotnet_diagnostic.RCS1151.severity = warning + +# Sort enum members +dotnet_diagnostic.RCS1154.severity = warning + +# Use StringComparison when comparing strings +dotnet_diagnostic.RCS1155.severity = error + +# Use string.Length instead of comparison with empty string +# - Configured by CA1820 +dotnet_diagnostic.RCS1156.severity = none + +# Composite enum value contains undefined flag +dotnet_diagnostic.RCS1157.severity = error + +# Static member in generic type should use a type parameter +# - Conflicts with CA1000 +dotnet_diagnostic.RCS1158.severity = none + +# Use EventHandler +# - Configured by CA1003 +dotnet_diagnostic.RCS1159.severity = none + +# Abstract type should not have public constructors +# - Configured by CA1012 +dotnet_diagnostic.RCS1160.severity = none + +# Enum should declare explicit values +dotnet_diagnostic.RCS1161.severity = warning + +# Avoid chain of assignments +dotnet_diagnostic.RCS1162.severity = warning + +# Unused parameter +# - Configured by Visual Studio +dotnet_diagnostic.RCS1163.severity = none + +# Unused type parameter +dotnet_diagnostic.RCS1164.severity = warning + +# Unconstrained type parameter checked for null +dotnet_diagnostic.RCS1165.severity = error + +# Value type object is never equal to null +dotnet_diagnostic.RCS1166.severity = error + +# Parameter name differs from base name +dotnet_diagnostic.RCS1168.severity = warning + +# Make field read-only +# - Configured by Visual Studio +dotnet_diagnostic.RCS1169.severity = none + +# Use read-only auto-implemented property +dotnet_diagnostic.RCS1170.severity = error + +# Simplify lazy initialization +dotnet_diagnostic.RCS1171.severity = warning + +# Use 'is' operator instead of 'as' operator +dotnet_diagnostic.RCS1172.severity = warning + +# Use coalesce expression instead of if +# - Configured by Visual Studio +dotnet_diagnostic.RCS1173.severity = none + +# Remove redundant async/await +dotnet_diagnostic.RCS1174.severity = warning + +# Unused this parameter +dotnet_diagnostic.RCS1175.severity = warning + +# Use 'var' instead of explicit type (when the type is not obvious) +# - Configured by Visual Studio +dotnet_diagnostic.RCS1176.severity = none + +# Use 'var' instead of explicit type (in foreach) +# - Configured by Visual Studio +dotnet_diagnostic.RCS1177.severity = none + +# Use return instead of assignment +dotnet_diagnostic.RCS1179.severity = warning + +# Inline lazy initialization +dotnet_diagnostic.RCS1180.severity = none + +# Convert comment to documentation comment +dotnet_diagnostic.RCS1181.severity = warning + +# Remove redundant base interface +dotnet_diagnostic.RCS1182.severity = warning + +# Use Regex instance instead of static method +# - https://stackoverflow.com/questions/414328/using-static-regex-ismatch-vs-creating-an-instance-of-regex +dotnet_diagnostic.RCS1186.severity = none + +# Use constant instead of field +# - Configured by CA1802 +dotnet_diagnostic.RCS1187.severity = none + +# Remove redundant auto-property initialization +dotnet_diagnostic.RCS1188.severity = warning + +# Add or remove region name +# - Configured by SA1124 +dotnet_diagnostic.RCS1189.severity = none + +# Join string expressions +dotnet_diagnostic.RCS1190.severity = warning + +# Declare enum value as combination of names +dotnet_diagnostic.RCS1191.severity = warning + +# Use regular string literal instead of verbatim string literal +dotnet_diagnostic.RCS1192.severity = warning + +# Overriding member cannot change 'params' modifier +dotnet_diagnostic.RCS1193.severity = error + +# Implement exception constructors +# - Configured by CA1032 +dotnet_diagnostic.RCS1194.severity = none + +# Use ^ operator +dotnet_diagnostic.RCS1195.severity = warning + +# Call extension method as instance method +dotnet_diagnostic.RCS1196.severity = warning + +# Optimize StringBuilder.Append/AppendLine call +dotnet_diagnostic.RCS1197.severity = error + +# Avoid unnecessary boxing of value type +# - https://davidzych.com/when-doing-string-concatenation-in-c-why-dont-you-have-to-call-tostring-on-non-string-variables/ +# - Performance difference is negligible +dotnet_diagnostic.RCS1198.severity = silent + +# Simplify boolean expression +dotnet_diagnostic.RCS1199.severity = warning + +# Call 'Enumerable.ThenBy' instead of 'Enumerable.OrderBy' +dotnet_diagnostic.RCS1200.severity = error + +# Use method chaining +dotnet_diagnostic.RCS1201.severity = warning + +# Avoid NullReferenceException +dotnet_diagnostic.RCS1202.severity = error + +# Use AttributeUsageAttribute +# - Configured by CA1018 +dotnet_diagnostic.RCS1203.severity = none + +# Use EventArgs.Empty +dotnet_diagnostic.RCS1204.severity = error + +# Order named arguments according to the order of parameters +dotnet_diagnostic.RCS1205.severity = warning + +# Use conditional access instead of conditional expression +dotnet_diagnostic.RCS1206.severity = error + +# Use anonymous function or method group +dotnet_diagnostic.RCS1207.severity = warning +roslynator_use_anonymous_function_or_method_group = method_group + +# Reduce if nesting +# - Conflicts with if statements in multiline lambda expressions +dotnet_diagnostic.RCS1208.severity = none + +# Order type parameter constraints +dotnet_diagnostic.RCS1209.severity = warning + +# Return Task.FromResult instead of returning null +dotnet_diagnostic.RCS1210.severity = error + +# Remove unnecessary else clause +dotnet_diagnostic.RCS1211.severity = warning + +# Remove redundant assignment +dotnet_diagnostic.RCS1212.severity = warning + +# Remove unused member declaration +dotnet_diagnostic.RCS1213.severity = warning + +# Unnecessary interpolated string +dotnet_diagnostic.RCS1214.severity = warning + +# Expression is always equal to true/false +dotnet_diagnostic.RCS1215.severity = warning + +# Unnecessary unsafe context +dotnet_diagnostic.RCS1216.severity = warning + +# Convert interpolated string to concatenation +dotnet_diagnostic.RCS1217.severity = warning + +# Simplify code branching +dotnet_diagnostic.RCS1218.severity = warning + +# Use pattern matching instead of combination of 'is' operator and cast operator +dotnet_diagnostic.RCS1220.severity = error + +# Use pattern matching instead of combination of 'as' operator and null check +dotnet_diagnostic.RCS1221.severity = error + +# Merge preprocessor directives +dotnet_diagnostic.RCS1222.severity = warning + +# Mark publicly visible type with DebuggerDisplay attribute +dotnet_diagnostic.RCS1223.severity = none + +# Make method an extension method +dotnet_diagnostic.RCS1224.severity = error + +# Make class sealed +dotnet_diagnostic.RCS1225.severity = error + +# Add paragraph to documentation comment +dotnet_diagnostic.RCS1226.severity = warning + +# Validate arguments correctly +# - Configured by CA1062 +dotnet_diagnostic.RCS1227.severity = none + +# Unused element in documentation comment +dotnet_diagnostic.RCS1228.severity = warning + +# Use async/await when necessary +dotnet_diagnostic.RCS1229.severity = error + +# Unnecessary usage of enumerator +dotnet_diagnostic.RCS1230.severity = warning + +# Make parameter ref read-only +# - https://www.c-sharpcorner.com/article/c-sharp-7-2-in-parameter-and-performance/ +dotnet_diagnostic.RCS1231.severity = error + +# Order elements in documentation comment +dotnet_diagnostic.RCS1232.severity = warning + +# Use short-circuiting operator +dotnet_diagnostic.RCS1233.severity = error + +# Duplicate enum value +dotnet_diagnostic.RCS1234.severity = warning + +# Optimize method call +dotnet_diagnostic.RCS1235.severity = error + +# Use exception filter +dotnet_diagnostic.RCS1236.severity = error + +# Avoid nested ?: operators +dotnet_diagnostic.RCS1238.severity = warning + +# Use 'for' statement instead of 'while' statement +dotnet_diagnostic.RCS1239.severity = warning + +# Operator is unnecessary +dotnet_diagnostic.RCS1240.severity = warning + +# Implement non-generic counterpart +dotnet_diagnostic.RCS1241.severity = error + +# Do not pass non-read-only struct by read-only reference +dotnet_diagnostic.RCS1242.severity = error + +# Duplicate word in a comment +dotnet_diagnostic.RCS1243.severity = warning + +# Simplify 'default' expression +dotnet_diagnostic.RCS1244.severity = warning + +# Use element access +dotnet_diagnostic.RCS1246.severity = error +roslynator.RCS1246.suppress_when_expression_is_invocation = true + +# Fix documentation comment tag +dotnet_diagnostic.RCS1247.severity = warning + +# Use 'is null' pattern instead of comparison (or vice versa) +dotnet_diagnostic.RCS1248.severity = warning +roslynator_null_check_style = pattern_matching + +# Unnecessary null-forgiving operator +dotnet_diagnostic.RCS1249.severity = warning + +# Use implicit/explicit object creation +dotnet_diagnostic.RCS1250.severity = warning +roslynator_object_creation_type_style = implicit_when_type_is_obvious +roslynator_use_var_instead_of_implicit_object_creation = false + +# Remove unnecessary braces from record declaration +dotnet_diagnostic.RCS1251.severity = warning + +# Normalize usage of infinite loop +dotnet_diagnostic.RCS1252.severity = warning +roslynator_infinite_loop_style = while + +# Format documentation comment summary +dotnet_diagnostic.RCS1253.severity = warning +roslynator_doc_comment_summary_style = multi_line + +# Normalize format of enum flag value +dotnet_diagnostic.RCS1254.severity = warning +roslynator_enum_flag_value_style = decimal_number + +# Simplify argument null check +dotnet_diagnostic.RCS1255.severity = warning + +# Invalid argument null check +dotnet_diagnostic.RCS1256.severity = error + +# Use enum field explicitly +dotnet_diagnostic.RCS1257.severity = error + +# Unnecessary enum flag +dotnet_diagnostic.RCS1258.severity = warning + +# Remove empty syntax +dotnet_diagnostic.RCS1259.severity = warning + +# Add/remove trailing comma +dotnet_diagnostic.RCS1260.severity = warning +roslynator_trailing_comma_style = omit_when_single_line + +########################################################################################################################################### +# Roslynator Code Analysis # +# https://github.com/JosefPihrt/Roslynator/blob/master/src/CodeAnalysis.Analyzers/README.md # +########################################################################################################################################### + +# Use pattern matching +dotnet_diagnostic.RCS9001.severity = error + +# Use property SyntaxNode.SpanStart +dotnet_diagnostic.RCS9002.severity = error + +# Unnecessary conditional access +dotnet_diagnostic.RCS9003.severity = error + +# Call 'Any' instead of accessing 'Count' +dotnet_diagnostic.RCS9004.severity = error + +# Unnecessary null check +dotnet_diagnostic.RCS9005.severity = error + +# Use element access +dotnet_diagnostic.RCS9006.severity = error + +# Use return value +dotnet_diagnostic.RCS9007.severity = none + +# Call 'Last' instead of using [] +dotnet_diagnostic.RCS9008.severity = error + +# Unknown language name +dotnet_diagnostic.RCS9009.severity = error + +# Specify ExportCodeRefactoringProviderAttribute.Name +dotnet_diagnostic.RCS9010.severity = error + +# Specify ExportCodeFixProviderAttribute.Name +dotnet_diagnostic.RCS9011.severity = error + +########################################################################################################################################### +# Roslynator Formatting # +# https://github.com/JosefPihrt/Roslynator/blob/master/src/Formatting.Analyzers/README.md # +########################################################################################################################################### + +# Add empty line after embedded statement +# - Conflicts with Visual Studio preferences (always use braces) +dotnet_diagnostic.RCS0001.severity = none + +# Add empty line after #region +dotnet_diagnostic.RCS0002.severity = none + +# Add empty line after using directive list +# - Configured by SA1513 +dotnet_diagnostic.RCS0003.severity = none + +# Add empty line after #region +dotnet_diagnostic.RCS0005.severity = none + +# Add empty line before using directive list +dotnet_diagnostic.RCS0006.severity = none + +# Add empty line between accessors +# - Configured by SA1513 +dotnet_diagnostic.RCS0007.severity = none + +# Add empty line between block and statement +# - Configured by SA1513 +dotnet_diagnostic.RCS0008.severity = none + +# Add empty line between declaration and documentation comment +# - Configured by SA1516 +dotnet_diagnostic.RCS0009.severity = none + +# Add empty line between declarations +# - Configured by SA1516 +dotnet_diagnostic.RCS0010.severity = none + +# Add/remove blank line between single-line accessors +dotnet_diagnostic.RCS0011.severity = warning +roslynator_blank_line_between_single_line_accessors = false + +# Add empty line between single-line declarations +# - Configured by SA1513 +dotnet_diagnostic.RCS0012.severity = none + +# Add empty line between single-line declarations of different kind +# - Configured by SA1513 +dotnet_diagnostic.RCS0013.severity = none + +# Add empty line between switch sections +dotnet_diagnostic.RCS0014.severity = none + +# Add/remove blank line between using directives +dotnet_diagnostic.RCS0015.severity = warning +roslynator_blank_line_between_using_directives = never + +# Add newline after attribute list +dotnet_diagnostic.RCS0016.severity = warning + +# Add newline after opening brace of accessor +dotnet_diagnostic.RCS0020.severity = none + +# Format single-line block +# - Configured by SA1502 +dotnet_diagnostic.RCS0021.severity = none + +# Format declaration braces +# - Configured by SA1502 +dotnet_diagnostic.RCS0023.severity = none + +# Add new line after switch label +dotnet_diagnostic.RCS0024.severity = warning + +# Add newline before accessor of full property +# - Configured by SA1502 +dotnet_diagnostic.RCS0025.severity = none + +# Add newline before binary operator instead of after it +dotnet_diagnostic.RCS0027.severity = none + +# Place new line after/before '?:' operator +dotnet_diagnostic.RCS0028.severity = warning +roslynator_conditional_operator_new_line = before + +# Add newline before constructor initializer +dotnet_diagnostic.RCS0029.severity = none + +# Add new line before embedded statement +# - Configured by Visual Studio +dotnet_diagnostic.RCS0030.severity = none + +# Add new line before enum member +# - Configured by SA1136 +dotnet_diagnostic.RCS0031.severity = none + +# Add newline before expression-body arrow instead of after it (or vice versa) +dotnet_diagnostic.RCS0032.severity = none + +# Add new line before statement +# - Configured by SA1502 +dotnet_diagnostic.RCS0033.severity = none + +# Add newline before type parameter constraint +dotnet_diagnostic.RCS0034.severity = none + +# Remove empty line between single-line declarations of same kind +dotnet_diagnostic.RCS0036.severity = none + +# Remove empty line between using directives with same root namespace +dotnet_diagnostic.RCS0038.severity = warning + +# Remove newline between 'if' keyword and 'else' keyword +dotnet_diagnostic.RCS0039.severity = none + +# Remove newline before base list +dotnet_diagnostic.RCS0041.severity = none + +# Remove newlines from accessor list of auto-property +# - Configured by SA1502 +dotnet_diagnostic.RCS0042.severity = none + +# Use carriage return + linefeed as newline +# - Configured by Visual Studio +dotnet_diagnostic.RCS0044.severity = none + +# Use linefeed as newline +# - Configured by Visual Studio +dotnet_diagnostic.RCS0045.severity = none + +# Use space(s) instead of tab +# - Configured by Visual Studio +dotnet_diagnostic.RCS0046.severity = none + +# Remove newlines from initializer with single-line expression +dotnet_diagnostic.RCS0048.severity = warning + +# Add empty line after top comment +dotnet_diagnostic.RCS0049.severity = warning + +# Add empty line before top declaration +# - Configured by SA1516 +dotnet_diagnostic.RCS0050.severity = none + +# Add newline between closing brace and 'while' keyword (or vice versa) +# - Configured by SA1500 +dotnet_diagnostic.RCS0051.severity = none + +# Place new line after/before equals token +dotnet_diagnostic.RCS0052.severity = warning +roslynator_equals_token_new_line = after + +# Fix formatting of a list +# - Configured by Visual Studio and StyleCop +dotnet_diagnostic.RCS0053.severity = none + +# Fix formatting of a call chain +dotnet_diagnostic.RCS0054.severity = warning + +# Fix formatting of a binary expression chain +dotnet_diagnostic.RCS0055.severity = warning + +# A line is too long +dotnet_diagnostic.RCS0056.severity = warning +roslynator_max_line_length = 140 + +# Normalize whitespace at the beginning of a file +dotnet_diagnostic.RCS0057.severity = warning + +# Normalize whitespace at the end of a file +# - Configured by Visual Studio +dotnet_diagnostic.RCS0058.severity = none + +# Place new line after/before null-conditional operator +dotnet_diagnostic.RCS0059.severity = warning +roslynator_null_conditional_operator_new_line = before + +# Add/remove line after file scoped namespace declaration +dotnet_diagnostic.RCS0060.severity = warning +roslynator_blank_line_after_file_scoped_namespace_declaration = true diff --git a/.NET/README.md b/.NET/README.md new file mode 100644 index 0000000..35b3a13 --- /dev/null +++ b/.NET/README.md @@ -0,0 +1,41 @@ +# .NET + +These are the configuration files for .NET projects and solutions. + +You can copy these files into the root of your .NET solution in order to activate the conventions. + +### directory.build.props + +The "directory.build.props" contains important project configuration, that need to be set for all .net projects in your solution. Some global compiler configuration will be set and the static analyzers get importet via NuGet. + +### .editorconfig + +The ".editorconfig" contains configuration for your code editor and the ruleset of the static analyzers. Copy this file into the root of you repository so that it is active for all files and folders. + +#### Analyzers + +| Name | Version | NuGet | +|--------------------------------------------|----------------|--------------------------------------------------------------------------------------------| +| Microsoft.CodeAnalysis.NetAnalyzers | 8.0.0 | [NuGet](https://www.nuget.org/packages/Microsoft.CodeAnalysis.NetAnalyzers/8.0.0) | +| Microsoft.VisualStudio.Threading.Analyzers | 17.8.14 | [NuGet](https://www.nuget.org/packages/Microsoft.VisualStudio.Threading.Analyzers/17.8.14) | +| Roslynator.Analyzers | 4.6.2 | [NuGet](https://www.nuget.org/packages/Roslynator.Analyzers/4.6.2) | +| Roslynator.CodeAnalysis.Analyzers | 4.6.2 | [NuGet](https://www.nuget.org/packages/Roslynator.CodeAnalysis.Analyzers/4.6.2) | +| Roslynator.Formatting.Analyzers | 4.6.2 | [NuGet](https://www.nuget.org/packages/Roslynator.Formatting.Analyzers/4.6.2) | +| StyleCop.Analyzers | 1.2.0-beta.556 | [NuGet](https://www.nuget.org/packages/StyleCop.Analyzers/1.2.0-beta.556) | + +#### Priority + +The analyzers are handled with priority. That means, that a violation of a rule from a analyzer with a higher priority overrides a violation of a lower priority analyzer. In case of conflicting rules from different analyzers, the rule from analyzer with the lower gets changed or deactivated. + +Priority of analyzers: + +1. Microsoft.CodeAnalysis.NetAnalyzers +2. Microsoft.VisualStudio.Threading.Analyzers +3. StyleCop.Analyzers +4. Roslynator.Analyzers +5. Roslynator.CodeAnalysis.Analyzers +6. Roslynator.Formatting.Analyzers + +### stylecop.json + +The "stylecop.json" contains the configuration for "StyleCop.Analyzers", that cannot be set via the ".editorconfig". This file must be copied into the root of your repository as it gets imported from there into all .NET projects by the "directory.build.props" diff --git a/.NET/directory.build.props b/.NET/directory.build.props new file mode 100644 index 0000000..3f5d152 --- /dev/null +++ b/.NET/directory.build.props @@ -0,0 +1,69 @@ + + + + + + net8.0 + latest + enable + latest + true + true + true + true + + + + + $(NoWarn);CA1014 + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers + + + diff --git a/.NET/stylecop.json b/.NET/stylecop.json new file mode 100644 index 0000000..20b5e75 --- /dev/null +++ b/.NET/stylecop.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "documentationRules": { + "fileNamingConvention": "metadata" + }, + "indentation": { + "indentationSize": 4, + "tabSize": 4, + "useTabs": false + }, + "layoutRules": { + "allowConsecutiveUsings": false, + "newlineAtEndOfFile": "require" + }, + "maintainabilityRules": { + "topLevelTypes": [ + "class", + "interface", + "struct", + "enum" + ] + }, + "namingRules": { + "includeInferredTupleElementNames": true + }, + "orderingRules": { + "blankLinesBetweenUsingGroups": "omit", + "usingDirectivesPlacement": "outsideNamespace" + }, + "readabilityRules": { + "allowBuiltInTypeAliases": false + } + } +} diff --git a/README.md b/README.md index 3ed450c..64792bf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ -# coding-conventions +# Coding Conventions +This project hosts the configuraton, rules and conventions that must be followed when developing software. -A collection of coding conventions to follow in all projects. \ No newline at end of file +You can customize this template locally in the projects, but all changes have to be explained by a comment. + +## Structure + +Configuration files that are importet into the IDE globally are stored in the root of this repository. There are folders for files that cover a specific development environments or frameworks. + +| Folder | Description | +|--------|----------------------------------------------| +| .NET | Configuration for .NET projects or solutions |