-
-
Save cdpidan/0ad79fbe837bfaddb2bae6d86ffcf9b1 to your computer and use it in GitHub Desktop.
Format c# with dotnet-format with pre-commit hook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # EditorConfig is awesome:http://EditorConfig.org | |
| # top-most EditorConfig file | |
| root = true | |
| # Don't use tabs for indentation. | |
| [*] | |
| indent_style = space | |
| # (Please don't specify an indent_size here; that has too many unintended consequences.) | |
| # Code files | |
| [*.{cs,csx,vb,vbx}] | |
| indent_size = 4 | |
| insert_final_newline = false | |
| charset = utf-8-bom | |
| # Xml project files | |
| [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] | |
| indent_size = 2 | |
| # Xml config files | |
| [*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] | |
| indent_size = 2 | |
| # JSON files | |
| [*.json] | |
| indent_size = 2 | |
| [*.{sh}] | |
| end_of_line = lf | |
| indent_size = 2 | |
| # Dotnet code style settings: | |
| [*.{cs,vb}] | |
| # Sort using and Import directives with System.* appearing first | |
| # dotnet_sort_system_directives_first = true | |
| # Avoid "this." and "Me." if not necessary | |
| dotnet_style_qualification_for_field = false:error | |
| dotnet_style_qualification_for_property = false:error | |
| dotnet_style_qualification_for_method = false:error | |
| dotnet_style_qualification_for_event = false:error | |
| # Use language keywords instead of framework type names for type references | |
| dotnet_style_predefined_type_for_locals_parameters_members = true:error | |
| dotnet_style_predefined_type_for_member_access = true:error | |
| # Suggest more modern language features when available | |
| dotnet_style_object_initializer = true:suggestion | |
| dotnet_style_collection_initializer = true:suggestion | |
| dotnet_style_coalesce_expression = true:suggestion | |
| dotnet_style_null_propagation = true:suggestion | |
| dotnet_style_explicit_tuple_names = true:suggestion | |
| # Non-private static fields are PascalCase | |
| dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.severity = suggestion | |
| dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non_private_static_fields | |
| dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style | |
| dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field | |
| dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected internal, private protected | |
| dotnet_naming_symbols.non_private_static_fields.required_modifiers = static | |
| dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case | |
| # Constants are PascalCase | |
| dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion | |
| dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants | |
| dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style | |
| dotnet_naming_symbols.constants.applicable_kinds = field, local | |
| dotnet_naming_symbols.constants.required_modifiers = const | |
| dotnet_naming_style.constant_style.capitalization = pascal_case | |
| # Static fields are camelCase and start with s_ | |
| dotnet_naming_rule.static_fields_should_be_camel_case.severity = suggestion | |
| dotnet_naming_rule.static_fields_should_be_camel_case.symbols = static_fields | |
| dotnet_naming_rule.static_fields_should_be_camel_case.style = static_field_style | |
| dotnet_naming_symbols.static_fields.applicable_kinds = field | |
| dotnet_naming_symbols.static_fields.required_modifiers = static | |
| dotnet_naming_style.static_field_style.capitalization = camel_case | |
| dotnet_naming_style.static_field_style.required_prefix = s_ | |
| # Instance fields are camelCase and start with _ | |
| dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion | |
| dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields | |
| dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style | |
| dotnet_naming_symbols.instance_fields.applicable_kinds = field | |
| dotnet_naming_style.instance_field_style.capitalization = camel_case | |
| dotnet_naming_style.instance_field_style.required_prefix = _ | |
| # Locals and parameters are camelCase | |
| dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion | |
| dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters | |
| dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style | |
| dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local | |
| dotnet_naming_style.camel_case_style.capitalization = camel_case | |
| # Local functions are PascalCase | |
| dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion | |
| dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions | |
| dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style | |
| dotnet_naming_symbols.local_functions.applicable_kinds = local_function | |
| dotnet_naming_style.local_function_style.capitalization = pascal_case | |
| # By default, name items with PascalCase | |
| dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion | |
| dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members | |
| dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style | |
| dotnet_naming_symbols.all_members.applicable_kinds = * | |
| dotnet_naming_style.pascal_case_style.capitalization = pascal_case | |
| # CSharp code style settings: | |
| [*.cs] | |
| # Indentation preferences | |
| csharp_indent_block_contents = true | |
| csharp_indent_braces = false | |
| csharp_indent_case_contents = true | |
| csharp_indent_case_contents_when_block = true | |
| csharp_indent_switch_labels = true | |
| csharp_indent_labels = flush_left | |
| # Prefer "var" everywhere | |
| dotnet_diagnostic.IDE0007.severity = error | |
| csharp_style_var_for_built_in_types = true:error | |
| csharp_style_var_when_type_is_apparent = true:error | |
| csharp_style_var_elsewhere = true:error | |
| # Prefer method-like constructs to have a block body | |
| csharp_style_expression_bodied_methods = false:none | |
| csharp_style_expression_bodied_constructors = false:none | |
| csharp_style_expression_bodied_operators = false:none | |
| # Prefer property-like constructs to have an expression-body | |
| csharp_style_expression_bodied_properties = true:error | |
| csharp_style_expression_bodied_indexers = true:error | |
| csharp_style_expression_bodied_accessors = true:error | |
| # Suggest more modern language features when available | |
| csharp_style_pattern_matching_over_is_with_cast_check = true:error | |
| csharp_style_pattern_matching_over_as_with_null_check = true:error | |
| csharp_style_inlined_variable_declaration = true:suggestion | |
| csharp_style_throw_expression = true:error | |
| csharp_style_conditional_delegate_call = true:suggestion | |
| # Newline settings | |
| 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 | |
| # Spacing | |
| csharp_space_after_cast = true | |
| csharp_space_after_colon_in_inheritance_clause = true | |
| csharp_space_after_keywords_in_control_flow_statements = true | |
| csharp_space_around_binary_operators = before_and_after | |
| csharp_space_before_colon_in_inheritance_clause = true | |
| csharp_space_between_method_call_empty_parameter_list_parentheses = false | |
| csharp_space_between_method_call_name_and_opening_parenthesis = false | |
| csharp_space_between_method_call_parameter_list_parentheses = false | |
| csharp_space_between_method_declaration_empty_parameter_list_parentheses = false | |
| csharp_space_between_method_declaration_parameter_list_parentheses = false | |
| csharp_space_between_parentheses = false | |
| # Blocks are allowed | |
| csharp_prefer_braces = true:silent | |
| csharp_preserve_single_line_blocks = true | |
| csharp_preserve_single_line_statements = true | |
| # IDE0073: File header | |
| dotnet_diagnostic.IDE0073.severity = warning | |
| file_header_template = Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. | |
| # IDE0035: Remove unreachable code | |
| dotnet_diagnostic.IDE0035.severity = warning | |
| # IDE0036: Order modifiers | |
| dotnet_diagnostic.IDE0036.severity = warning | |
| # IDE0040: Add accessibility modifiers | |
| dotnet_diagnostic.IDE0040.severity = warning | |
| # IDE0043: Format string contains invalid placeholder | |
| dotnet_diagnostic.IDE0043.severity = warning | |
| # IDE0044: Make field readonly | |
| dotnet_diagnostic.IDE0044.severity = warning | |
| # CONSIDER: Are IDE0051 and IDE0052 too noisy to be warnings for IDE editing scenarios? Should they be made build-only warnings? | |
| # IDE0051: Remove unused private member | |
| dotnet_diagnostic.IDE0051.severity = error | |
| # IDE0052: Remove unread private member | |
| dotnet_diagnostic.IDE0052.severity = warning | |
| # IDE0059: Unnecessary assignment to a value | |
| dotnet_diagnostic.IDE0059.severity = warning | |
| # IDE0060: Remove unused parameter | |
| dotnet_diagnostic.IDE0060.severity = warning | |
| # IDE0005: Using directive is unnecessary | |
| dotnet_diagnostic.IDE0005.severity = warning |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| # Modified from https://gist.github.com/EtherZa/581d9276336353838b2c939f9554d479 | |
| # | |
| # This script finds the files that are about to be committed, | |
| # and runs dotnet format on them before adding them back to staging | |
| # | |
| # install dotnet-format: dotnet tool install -g dotnet-format | |
| # make sure installed dotnet tools are on your path: | |
| # export PATH="$PATH:$HOME/.dotnet/tools/" | |
| # copy to .git/hooks/pre-commit and make executable | |
| # | |
| FILES=$(git diff --cached --name-only --diff-filter=ACM "*.cs") | |
| [ -z "$FILES" ] && exit 0 | |
| echo "Running dotnet format for staged files" | |
| dotnet format --include $FILES -f | |
| # Add back the modified files to staging | |
| echo "$FILES" | xargs git add | |
| echo "dotnet format done" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment