# NOTE: Requires **VS2019 16.3** or later

# MiKo Solution Test Rules
# Description: This rule set contains all rules. Running this rule set may result in a large number of warnings being reported. Use this rule set to get a comprehensive picture of all issues in your code. This can help you decide which of the more focused rule sets are most appropriate to run for your projects.

# Code files
[*.{cs,vb}]
csharp_style_expression_bodied_methods = when_on_single_line            # Use expression body for methods (IDE0022)
csharp_style_expression_bodied_local_functions = when_on_single_line    # Use expression body for local functions (IDE0061)
csharp_indent_case_contents_when_block = false							# Formatting rule (IDE0055), see https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/csharp-formatting-options#csharp_indent_case_contents_when_block
csharp_style_expression_bodied_constructors = when_on_single_line       # Use expression body for constructors (IDE0021)
csharp_style_expression_bodied_operators = when_on_single_line          # Use expression body for operators (IDE0023 and IDE0024)

dotnet_diagnostic.IDE0008.severity = none
dotnet_diagnostic.IDE0010.severity = none # Add missing cases to switch statement (IDE0010)
dotnet_diagnostic.IDE0022.severity = none # Use expression body for methods (IDE0022)
dotnet_diagnostic.IDE0055.severity = none # Formatting rule (IDE0055)
dotnet_diagnostic.IDE0058.severity = none # Remove unnecessary expression value (IDE0058)
dotnet_diagnostic.IDE0061.severity = none # Use expression body for local functions (IDE0061)

# Default severity for analyzer diagnostics - Requires **VS2019 16.5** or later
dotnet_analyzer_diagnostic.severity = warning

dotnet_diagnostic.CA1011.severity = none
dotnet_diagnostic.CA1020.severity = none
dotnet_diagnostic.CA1034.severity = none
dotnet_diagnostic.CA1062.severity = none
dotnet_diagnostic.CA1303.severity = none
dotnet_diagnostic.CA1704.severity = none
dotnet_diagnostic.CA1707.severity = none
dotnet_diagnostic.CA1709.severity = none
dotnet_diagnostic.CA1801.severity = none
dotnet_diagnostic.CA1811.severity = none
dotnet_diagnostic.CA1812.severity = none
dotnet_diagnostic.CA1822.severity = none
dotnet_diagnostic.CA1861.severity = none
dotnet_diagnostic.CA2204.severity = none
dotnet_diagnostic.CA2210.severity = none

dotnet_diagnostic.SA0001.severity = none
dotnet_diagnostic.SA0002.severity = error
dotnet_diagnostic.SA1000.severity = error
dotnet_diagnostic.SA1001.severity = error
dotnet_diagnostic.SA1002.severity = error
dotnet_diagnostic.SA1003.severity = error
dotnet_diagnostic.SA1004.severity = error
dotnet_diagnostic.SA1005.severity = error
dotnet_diagnostic.SA1006.severity = error
dotnet_diagnostic.SA1007.severity = error
dotnet_diagnostic.SA1008.severity = error
dotnet_diagnostic.SA1009.severity = error
dotnet_diagnostic.SA1010.severity = error
dotnet_diagnostic.SA1011.severity = error
dotnet_diagnostic.SA1012.severity = error
dotnet_diagnostic.SA1013.severity = error
dotnet_diagnostic.SA1014.severity = error
dotnet_diagnostic.SA1015.severity = error
dotnet_diagnostic.SA1016.severity = error
dotnet_diagnostic.SA1017.severity = error
dotnet_diagnostic.SA1018.severity = error
dotnet_diagnostic.SA1019.severity = error
dotnet_diagnostic.SA1020.severity = error
dotnet_diagnostic.SA1021.severity = error
dotnet_diagnostic.SA1022.severity = error
dotnet_diagnostic.SA1023.severity = error
dotnet_diagnostic.SA1024.severity = error
dotnet_diagnostic.SA1025.severity = error
dotnet_diagnostic.SA1026.severity = error
dotnet_diagnostic.SA1027.severity = error
dotnet_diagnostic.SA1028.severity = error
dotnet_diagnostic.SA1100.severity = error
dotnet_diagnostic.SA1101.severity = silent
dotnet_diagnostic.SA1102.severity = error
dotnet_diagnostic.SA1103.severity = error
dotnet_diagnostic.SA1104.severity = error
dotnet_diagnostic.SA1105.severity = error
dotnet_diagnostic.SA1106.severity = error
dotnet_diagnostic.SA1107.severity = error
dotnet_diagnostic.SA1108.severity = error
dotnet_diagnostic.SA1109.severity = error
dotnet_diagnostic.SA1110.severity = error
dotnet_diagnostic.SA1111.severity = error
dotnet_diagnostic.SA1112.severity = error
dotnet_diagnostic.SA1113.severity = error
dotnet_diagnostic.SA1114.severity = error
dotnet_diagnostic.SA1115.severity = error
dotnet_diagnostic.SA1116.severity = error
dotnet_diagnostic.SA1117.severity = error
dotnet_diagnostic.SA1118.severity = error
dotnet_diagnostic.SA1119.severity = error
dotnet_diagnostic.SA1120.severity = error
dotnet_diagnostic.SA1121.severity = error
dotnet_diagnostic.SA1122.severity = error
dotnet_diagnostic.SA1123.severity = error
dotnet_diagnostic.SA1124.severity = error
dotnet_diagnostic.SA1125.severity = error
dotnet_diagnostic.SA1127.severity = silent
dotnet_diagnostic.SA1128.severity = silent
dotnet_diagnostic.SA1129.severity = error
dotnet_diagnostic.SA1130.severity = error
dotnet_diagnostic.SA1131.severity = error
dotnet_diagnostic.SA1132.severity = error
dotnet_diagnostic.SA1133.severity = silent
dotnet_diagnostic.SA1134.severity = error
dotnet_diagnostic.SA1136.severity = error
dotnet_diagnostic.SA1137.severity = error
dotnet_diagnostic.SA1139.severity = error
dotnet_diagnostic.SA1200.severity = error
dotnet_diagnostic.SA1201.severity = error
dotnet_diagnostic.SA1202.severity = error
dotnet_diagnostic.SA1203.severity = error
dotnet_diagnostic.SA1204.severity = error
dotnet_diagnostic.SA1205.severity = error
dotnet_diagnostic.SA1206.severity = error
dotnet_diagnostic.SA1207.severity = error
dotnet_diagnostic.SA1208.severity = error
dotnet_diagnostic.SA1209.severity = error
dotnet_diagnostic.SA1210.severity = error
dotnet_diagnostic.SA1211.severity = error
dotnet_diagnostic.SA1212.severity = error
dotnet_diagnostic.SA1213.severity = error
dotnet_diagnostic.SA1214.severity = error
dotnet_diagnostic.SA1215.severity = error
dotnet_diagnostic.SA1216.severity = error
dotnet_diagnostic.SA1217.severity = error
dotnet_diagnostic.SA1300.severity = error
dotnet_diagnostic.SA1301.severity = error
dotnet_diagnostic.SA1302.severity = error
dotnet_diagnostic.SA1303.severity = error
dotnet_diagnostic.SA1304.severity = error
dotnet_diagnostic.SA1305.severity = error
dotnet_diagnostic.SA1306.severity = error
dotnet_diagnostic.SA1307.severity = error
dotnet_diagnostic.SA1308.severity = silent
dotnet_diagnostic.SA1309.severity = error
dotnet_diagnostic.SA1310.severity = error
dotnet_diagnostic.SA1311.severity = error
dotnet_diagnostic.SA1312.severity = error
dotnet_diagnostic.SA1313.severity = error
dotnet_diagnostic.SA1314.severity = error
dotnet_diagnostic.SA1400.severity = error
dotnet_diagnostic.SA1401.severity = silent
dotnet_diagnostic.SA1402.severity = error
dotnet_diagnostic.SA1403.severity = error
dotnet_diagnostic.SA1404.severity = error
dotnet_diagnostic.SA1405.severity = error
dotnet_diagnostic.SA1406.severity = error
dotnet_diagnostic.SA1407.severity = error
dotnet_diagnostic.SA1408.severity = error
dotnet_diagnostic.SA1409.severity = error
dotnet_diagnostic.SA1410.severity = error
dotnet_diagnostic.SA1411.severity = error
dotnet_diagnostic.SA1412.severity = error
dotnet_diagnostic.SA1413.severity = error
dotnet_diagnostic.SA1500.severity = error
dotnet_diagnostic.SA1501.severity = error
dotnet_diagnostic.SA1502.severity = error
dotnet_diagnostic.SA1503.severity = error
dotnet_diagnostic.SA1504.severity = error
dotnet_diagnostic.SA1505.severity = error
dotnet_diagnostic.SA1506.severity = error
dotnet_diagnostic.SA1507.severity = error
dotnet_diagnostic.SA1508.severity = error
dotnet_diagnostic.SA1509.severity = error
dotnet_diagnostic.SA1510.severity = error
dotnet_diagnostic.SA1511.severity = error
dotnet_diagnostic.SA1512.severity = error
dotnet_diagnostic.SA1513.severity = error
dotnet_diagnostic.SA1514.severity = error
dotnet_diagnostic.SA1515.severity = error
dotnet_diagnostic.SA1516.severity = error
dotnet_diagnostic.SA1517.severity = error
dotnet_diagnostic.SA1518.severity = error
dotnet_diagnostic.SA1519.severity = error
dotnet_diagnostic.SA1520.severity = error
dotnet_diagnostic.SA1600.severity = silent
dotnet_diagnostic.SA1601.severity = silent
dotnet_diagnostic.SA1602.severity = silent
dotnet_diagnostic.SA1603.severity = error
dotnet_diagnostic.SA1604.severity = error
dotnet_diagnostic.SA1605.severity = error
dotnet_diagnostic.SA1606.severity = error
dotnet_diagnostic.SA1607.severity = error
dotnet_diagnostic.SA1608.severity = error
dotnet_diagnostic.SA1609.severity = error
dotnet_diagnostic.SA1610.severity = error
dotnet_diagnostic.SA1611.severity = error
dotnet_diagnostic.SA1612.severity = error
dotnet_diagnostic.SA1613.severity = error
dotnet_diagnostic.SA1614.severity = error
dotnet_diagnostic.SA1615.severity = error
dotnet_diagnostic.SA1616.severity = error
dotnet_diagnostic.SA1617.severity = error
dotnet_diagnostic.SA1618.severity = error
dotnet_diagnostic.SA1619.severity = error
dotnet_diagnostic.SA1620.severity = error
dotnet_diagnostic.SA1621.severity = error
dotnet_diagnostic.SA1622.severity = error
dotnet_diagnostic.SA1623.severity = error
dotnet_diagnostic.SA1624.severity = error
dotnet_diagnostic.SA1625.severity = error
dotnet_diagnostic.SA1626.severity = error
dotnet_diagnostic.SA1627.severity = error
dotnet_diagnostic.SA1628.severity = error
dotnet_diagnostic.SA1629.severity = error
dotnet_diagnostic.SA1630.severity = error
dotnet_diagnostic.SA1631.severity = error
dotnet_diagnostic.SA1632.severity = error
dotnet_diagnostic.SA1633.severity = silent
dotnet_diagnostic.SA1634.severity = error
dotnet_diagnostic.SA1635.severity = error
dotnet_diagnostic.SA1636.severity = error
dotnet_diagnostic.SA1637.severity = error
dotnet_diagnostic.SA1638.severity = error
dotnet_diagnostic.SA1639.severity = error
dotnet_diagnostic.SA1640.severity = error
dotnet_diagnostic.SA1641.severity = error
dotnet_diagnostic.SA1642.severity = error
dotnet_diagnostic.SA1643.severity = error
dotnet_diagnostic.SA1644.severity = error
dotnet_diagnostic.SA1645.severity = error
dotnet_diagnostic.SA1646.severity = error
dotnet_diagnostic.SA1647.severity = error
dotnet_diagnostic.SA1648.severity = error
dotnet_diagnostic.SA1649.severity = error
dotnet_diagnostic.SA1650.severity = error
dotnet_diagnostic.SA1651.severity = error

dotnet_diagnostic.SX1309.severity = silent
dotnet_diagnostic.SX1309S.severity = silent

[*.{cs,vb}]
#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers = 

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers = 

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers = 

# Naming styles

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix = 
dotnet_naming_style.begins_with_i.word_separator = 
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 4
indent_size = 4
end_of_line = crlf
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
dotnet_style_prefer_collection_expression = when_types_loosely_match:suggestion
dotnet_style_namespace_match_folder = true:suggestion

[*.cs]
csharp_indent_labels = no_change
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_prefer_braces = true:silent
csharp_style_namespace_declarations = block_scoped:silent
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_prefer_top_level_statements = true:silent
csharp_style_prefer_primary_constructors = true:suggestion
csharp_style_expression_bodied_methods = when_on_single_line:silent
csharp_style_expression_bodied_constructors = when_on_single_line:silent
csharp_style_expression_bodied_operators = when_on_single_line:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = when_on_single_line:silent
csharp_style_throw_expression = true:suggestion
csharp_style_prefer_null_check_over_type_check = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_prefer_local_over_anonymous_function = true:suggestion
csharp_style_prefer_index_operator = true:suggestion
csharp_style_prefer_range_operator = true:suggestion
csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
csharp_style_prefer_tuple_swap = true:suggestion
csharp_style_prefer_utf8_string_literals = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion