diff --git a/.editorconfig b/.editorconfig index 5ced2cd30..867ace8a7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -23,150 +23,41 @@ trim_trailing_whitespace = false [*.cs] -#### Organize usings #### +#### Bulk severity: elevate all Style analyzers to suggestion #### +dotnet_analyzer_diagnostic.category-Style.severity = suggestion + +#### Organize usings (non-default) #### dotnet_sort_system_directives_first = true -dotnet_separate_import_directive_groups = false - -#### this. and Me. preferences #### -dotnet_style_qualification_for_field = false:warning -dotnet_style_qualification_for_property = false:warning -dotnet_style_qualification_for_method = false:warning -dotnet_style_qualification_for_event = false:warning - -#### Language keywords vs BCL types preferences #### -dotnet_style_predefined_type_for_locals_parameters_members = true:warning -dotnet_style_predefined_type_for_member_access = true:warning - -#### Parentheses preferences #### -dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent -dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent -dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent -dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent - -#### Modifier preferences #### -dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning - -#### Expression-level preferences #### -dotnet_style_object_initializer = true:suggestion -dotnet_style_collection_initializer = true:suggestion -dotnet_style_explicit_tuple_names = true:warning -dotnet_style_prefer_inferred_tuple_names = true:suggestion -dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion -dotnet_style_prefer_auto_properties = true:suggestion -dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion -dotnet_style_prefer_conditional_expression_over_return = true:suggestion -dotnet_style_prefer_compound_assignment = true:suggestion -dotnet_style_prefer_simplified_interpolation = true:suggestion -dotnet_style_prefer_simplified_boolean_expressions = true:suggestion - -#### Null-checking preferences #### -dotnet_style_coalesce_expression = true:suggestion -dotnet_style_null_propagation = true:suggestion -dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning #### File header #### file_header_template = Copyright (c) GraphZen LLC. All rights reserved.\nLicensed under the GraphZen Community License. See the LICENSE file in the project root for license information. -############################### -# C# Code Style Rules # -############################### +#### var preferences (non-default: Roslyn defaults to false) #### +csharp_style_var_for_built_in_types = true +csharp_style_var_when_type_is_apparent = true +csharp_style_var_elsewhere = true -#### var preferences #### -csharp_style_var_for_built_in_types = true:suggestion -csharp_style_var_when_type_is_apparent = true:suggestion -csharp_style_var_elsewhere = true:suggestion - -#### Expression-bodied members #### -csharp_style_expression_bodied_methods = true:suggestion -csharp_style_expression_bodied_constructors = true:suggestion -csharp_style_expression_bodied_operators = true:suggestion -csharp_style_expression_bodied_properties = true:suggestion -csharp_style_expression_bodied_indexers = true:suggestion -csharp_style_expression_bodied_accessors = true:suggestion -csharp_style_expression_bodied_lambdas = true:silent -csharp_style_expression_bodied_local_functions = true:suggestion - -#### Pattern matching preferences #### -csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion -csharp_style_pattern_matching_over_as_with_null_check = true:suggestion -csharp_style_prefer_switch_expression = true:suggestion -csharp_style_prefer_pattern_matching = true:suggestion -csharp_style_prefer_not_pattern = true:suggestion - -#### Null-checking preferences #### -csharp_style_throw_expression = true:suggestion -csharp_style_conditional_delegate_call = true:suggestion - -#### Modifier preferences #### -csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:warning - -#### Code-block preferences #### -csharp_prefer_braces = true:warning -csharp_prefer_simple_using_statement = true:suggestion -csharp_style_namespace_declarations = file_scoped:warning - -#### Expression-level preferences #### -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_deconstructed_variable_declaration = true:suggestion -csharp_style_inlined_variable_declaration = true:suggestion -csharp_style_unused_value_assignment_preference = discard_variable:suggestion -csharp_style_unused_value_expression_statement_preference = discard_variable:silent -csharp_using_directive_placement = outside_namespace:warning +#### Expression-bodied members (non-default: Roslyn defaults to false) #### +csharp_style_expression_bodied_methods = true +csharp_style_expression_bodied_constructors = true +csharp_style_expression_bodied_operators = true +csharp_style_expression_bodied_local_functions = true -############################### -# C# Formatting Rules # -############################### +#### Namespace declarations (non-default: Roslyn defaults to block_scoped) #### +csharp_style_namespace_declarations = file_scoped -#### New line preferences #### -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 preferences #### -csharp_indent_case_contents = true -csharp_indent_switch_labels = true -csharp_indent_labels = one_less_than_current -csharp_indent_block_contents = true -csharp_indent_braces = false -csharp_indent_case_contents_when_block = true - -#### Space preferences #### -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 - -#### Wrapping preferences #### +#### Wrapping preferences (non-default: Roslyn defaults to true) #### csharp_preserve_single_line_statements = false -csharp_preserve_single_line_blocks = true + +#### Modern C# rules (C# 10-13) #### +csharp_style_prefer_extended_property_pattern = true +csharp_style_prefer_readonly_struct = true +csharp_style_prefer_readonly_struct_member = true +csharp_style_prefer_method_group_conversion = true +csharp_style_prefer_null_check_over_type_check = true +csharp_style_prefer_primary_constructors = true +csharp_style_prefer_top_level_statements = true +dotnet_style_prefer_collection_expression = when_types_loosely_match ############################### # Naming Conventions # @@ -283,24 +174,28 @@ dotnet_naming_rule.namespaces_must_be_pascal_case.symbols = namespace_symbols dotnet_naming_rule.namespaces_must_be_pascal_case.style = pascal_case_style ############################### -# Analyzer Severities # +# Analyzer Severity Overrides # ############################### -# IDE0005: Remove unnecessary using directives +# Rules elevated to warning (above bulk suggestion) +dotnet_diagnostic.IDE0003.severity = warning dotnet_diagnostic.IDE0005.severity = warning - -# IDE0011: Add braces +dotnet_diagnostic.IDE0009.severity = warning dotnet_diagnostic.IDE0011.severity = warning - -# IDE0160/IDE0161: Namespace declaration preferences -dotnet_diagnostic.IDE0161.severity = warning - -# IDE0065: Using directive placement +dotnet_diagnostic.IDE0033.severity = warning +dotnet_diagnostic.IDE0036.severity = warning +dotnet_diagnostic.IDE0040.severity = warning +dotnet_diagnostic.IDE0041.severity = warning +dotnet_diagnostic.IDE0049.severity = warning dotnet_diagnostic.IDE0065.severity = warning +dotnet_diagnostic.IDE0161.severity = warning -# IDE0003/IDE0009: this. and Me. preferences -dotnet_diagnostic.IDE0003.severity = warning -dotnet_diagnostic.IDE0009.severity = warning +# Rules lowered to silent (below bulk suggestion) +dotnet_diagnostic.IDE0047.severity = silent +dotnet_diagnostic.IDE0048.severity = silent +dotnet_diagnostic.IDE0053.severity = silent +dotnet_diagnostic.IDE0058.severity = silent +dotnet_diagnostic.IDE0210.severity = silent ############################### # ReSharper Properties # @@ -317,6 +212,10 @@ resharper_braces_for_while = required # Abbreviation overrides (allow AST, QL as valid naming) resharper_abbreviations = AST QL +# Formatting alignment with dotnet format (Phase 3: resolve tool conflicts) +resharper_place_field_attribute_on_same_line = if_owner_is_single_line +resharper_wrap_object_and_collection_initializer_style = wrap_if_long + ############################### # Test Projects # ############################### diff --git a/GraphZen.slnx.DotSettings b/GraphZen.slnx.DotSettings index 961182d99..e85439363 100644 --- a/GraphZen.slnx.DotSettings +++ b/GraphZen.slnx.DotSettings @@ -24,33 +24,16 @@ True - SUGGESTION - SUGGESTION - SUGGESTION - WARNING - WARNING - SUGGESTION SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION SUGGESTION SUGGESTION - SUGGESTION - SUGGESTION - SUGGESTION <?xml version="1.0" encoding="utf-16"?><Profile name="GraphZen: Full Cleanup"><XMLReformatCode>True</XMLReformatCode><CppAddOverrideSpecifier>True</CppAddOverrideSpecifier><CppAddTypenameTemplateKeywords>True</CppAddTypenameTemplateKeywords><CppReplaceImportDirective>True</CppReplaceImportDirective><CppRemoveElseKeyword>True</CppRemoveElseKeyword><CppShortenQualifiedName>True</CppShortenQualifiedName><CppDeleteRedundantSpecifier>True</CppDeleteRedundantSpecifier><CppRemoveStatement>True</CppRemoveStatement><CppDeleteRedundantTypenameTemplateKeywords>True</CppDeleteRedundantTypenameTemplateKeywords><CppCStyleToStaticCastDescriptor>True</CppCStyleToStaticCastDescriptor><CppReplaceExpressionWithBooleanConst>True</CppReplaceExpressionWithBooleanConst><CppMakeIfConstexpr>True</CppMakeIfConstexpr><CppMakePostfixOperatorPrefix>True</CppMakePostfixOperatorPrefix><CppChangeSmartPointerToMakeFunction>True</CppChangeSmartPointerToMakeFunction><CppReplaceThrowWithRethrowFix>True</CppReplaceThrowWithRethrowFix><CppReplaceExpressionWithNullptr>True</CppReplaceExpressionWithNullptr><CppSortMemberInitializers>True</CppSortMemberInitializers><CppClangTidyCleanupDescriptor /><CppReformatCode>True</CppReformatCode><CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="True" ArrangeVarStyle="True" /><RemoveCodeRedundanciesVB>True</RemoveCodeRedundanciesVB><CssAlphabetizeProperties>True</CssAlphabetizeProperties><JsInsertSemicolon>True</JsInsertSemicolon><FormatAttributeQuoteDescriptor>True</FormatAttributeQuoteDescriptor><CorrectVariableKindsDescriptor>True</CorrectVariableKindsDescriptor><VariablesToInnerScopesDescriptor>True</VariablesToInnerScopesDescriptor><StringToTemplatesDescriptor>True</StringToTemplatesDescriptor><JsReformatCode>True</JsReformatCode><JsFormatDocComments>True</JsFormatDocComments><RemoveRedundantQualifiersTs>True</RemoveRedundantQualifiersTs><OptimizeImportsTs>True</OptimizeImportsTs><OptimizeReferenceCommentsTs>True</OptimizeReferenceCommentsTs><PublicModifierStyleTs>True</PublicModifierStyleTs><ExplicitAnyTs>True</ExplicitAnyTs><TypeAnnotationStyleTs>True</TypeAnnotationStyleTs><RelativePathStyleTs>True</RelativePathStyleTs><AsInsteadOfCastTs>True</AsInsteadOfCastTs><HtmlReformatCode>True</HtmlReformatCode><AspOptimizeRegisterDirectives>True</AspOptimizeRegisterDirectives><VBOptimizeImports>True</VBOptimizeImports><VBShortenReferences>True</VBShortenReferences><RemoveCodeRedundancies>True</RemoveCodeRedundancies><CSUseAutoProperty>True</CSUseAutoProperty><CSMakeFieldReadonly>True</CSMakeFieldReadonly><CSMakeAutoPropertyGetOnly>True</CSMakeAutoPropertyGetOnly><CSArrangeQualifiers>True</CSArrangeQualifiers><CSFixBuiltinTypeReferences>True</CSFixBuiltinTypeReferences><CssReformatCode>True</CssReformatCode><VBReformatCode>True</VBReformatCode><VBFormatDocComments>True</VBFormatDocComments><CSOptimizeUsings><OptimizeUsings>True</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSShortenReferences>True</CSShortenReferences><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><CSUpdateFileHeader>True</CSUpdateFileHeader><XAMLCollapseEmptyTags>False</XAMLCollapseEmptyTags></Profile> GraphZen: Full Cleanup - + GraphZen.Infrastructure - JetBrains.Annotations - System.Diagnostics.CodeAnalysis Copyright (c) GraphZen LLC. All rights reserved. @@ -64,4 +47,4 @@ Licensed under the GraphZen Community License. See the LICENSE file in the proje True True True - True \ No newline at end of file + True