files-community / Files

A modern file manager that helps users organize their files and folders.
https://files.community
MIT License
34.94k stars 2.22k forks source link

Code Quality: Enforce code style in EditorConfig #16431

Open Lamparter opened 1 month ago

Lamparter commented 1 month ago

Description

Currently, there is a code style, Website:"docs/contributing/code-style". However, this would be better if it was enforced throughout the codebase through the editorconfig file in the root directory.

Concerned code

https://github.com/files-community/Files/blob/e7d00f37a27c21b7ba89a6fb5a6e9c5e16aeb839/.editorconfig#L3-L6

Gains

Requirements

Comments

I did a first draft here, I'll create a PR for it when this issue is marked ready to build. ```editorconfig root = true [**/*.xaml] indent_style = tab indent_size = 4 tab_width = 4 [**/*.cs] indent_style = tab indent_size = 4 tab_width = 4 # https://files.community/docs/contributing/code-style dotnet_naming_rule.pascal_case_for_classes.symbols = classes dotnet_naming_symbols.classes.applicable_kinds = class dotnet_naming_symbols.classes.applicable_accessibilities = * dotnet_naming_symbols.classes.required_prefix = dotnet_naming_symbols.classes.required_suffix = dotnet_naming_rule.pascal_case_for_interfaces.symbols = interfaces dotnet_naming_symbols.interfaces.applicable_kinds = interface dotnet_naming_symbols.interfaces.applicable_accessibilities = * dotnet_naming_symbols.interfaces.required_prefix = I dotnet_naming_symbols.interfaces.required_suffix = dotnet_naming_rule.pascal_case_for_structs.symbols = structs dotnet_naming_symbols.structs.applicable_kinds = struct dotnet_naming_symbols.structs.applicable_accessibilities = * dotnet_naming_symbols.structs.required_prefix = dotnet_naming_symbols.structs.required_suffix = dotnet_naming_rule.pascal_case_for_methods.symbols = methods dotnet_naming_symbols.methods.applicable_kinds = method dotnet_naming_symbols.methods.applicable_accessibilities = * dotnet_naming_symbols.methods.required_prefix = dotnet_naming_symbols.methods.required_suffix = Async dotnet_naming_rule.camel_case_for_variables.symbols = variables dotnet_naming_symbols.variables.applicable_kinds = field dotnet_naming_symbols.variables.applicable_accessibilities = private dotnet_naming_symbols.variables.required_prefix = _ dotnet_naming_symbols.variables.required_suffix = dotnet_naming_rule.camel_case_for_parameters.symbols = parameters dotnet_naming_symbols.parameters.applicable_kinds = parameter dotnet_naming_symbols.parameters.applicable_accessibilities = * dotnet_naming_symbols.parameters.required_prefix = dotnet_naming_symbols.parameters.required_suffix = dotnet_naming_rule.pascal_case_for_properties.symbols = properties dotnet_naming_symbols.properties.applicable_kinds = property dotnet_naming_symbols.properties.applicable_accessibilities = * dotnet_naming_symbols.properties.required_prefix = dotnet_naming_symbols.properties.required_suffix = dotnet_naming_rule.upper_case_for_constants.symbols = constants dotnet_naming_symbols.constants.applicable_kinds = field dotnet_naming_symbols.constants.applicable_accessibilities = * dotnet_naming_symbols.constants.required_prefix = dotnet_naming_symbols.constants.required_suffix = dotnet_naming_symbols.constants.required_capitalization = all_upper dotnet_style_require_accessibility_modifiers = always:suggestion dotnet_style_readonly_field = true:suggestion dotnet_style_qualify_field_access = false dotnet_style_qualify_property_access = false dotnet_style_qualify_method_access = false dotnet_style_qualify_event_access = false dotnet_style_prefer_auto_properties = true:suggestion dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion 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 csharp_style_var_for_built_in_types = true:suggestion csharp_style_var_when_type_is_apparent = true:suggestion csharp_style_var_elsewhere = true:suggestion csharp_style_namespace_declarations = file_scoped dotnet_naming_rule.pascal_case_for_classes.style = pascal_case dotnet_naming_rule.pascal_case_for_interfaces.style = pascal_case dotnet_naming_rule.pascal_case_for_structs.style = pascal_case dotnet_naming_rule.pascal_case_for_methods.style = pascal_case dotnet_naming_rule.camel_case_for_variables.style = camel_case dotnet_naming_rule.camel_case_for_parameters.style = camel_case dotnet_naming_rule.pascal_case_for_properties.style = pascal_case dotnet_naming_rule.upper_case_for_constants.style = all_upper dotnet_naming_style.pascal_case.capitalization = pascal_case dotnet_naming_style.camel_case.capitalization = camel_case dotnet_naming_style.all_upper.capitalization = all_upper ```
yaira2 commented 1 month ago

I thought we had this at one point. @lukeblevins do you have any recollection?

0x5bfa commented 1 month ago

I think it's good idea but some values are default so can be deducted. @yaira2 i guess that's this #2781?

lukeblevins commented 1 month ago

Visual Studio might have not supported editorconfig preferences for XAML. I don't recall whether that's changed

Lamparter commented 1 month ago

@yaira2 would you like to move forward with this?

yaira2 commented 1 month ago

Yes

0x5bfa commented 1 month ago

Once you made a PR, I'll shortly review it out.

yaira2 commented 3 weeks ago

If I remember correctly, the last time this was discussed, we concluded that it would be better to add a check before merging PRs, similar to what we do for XAML.

0x5bfa commented 3 weeks ago

Did we? but it's a great idea. We should use "dotnet format" and specify changed files for each. Ctrl+S doesn't format automatically like XamlStyler so we can do that any time before or after

Lamparter commented 3 weeks ago

Yes exactly. Visual Studio's code cleanup feature is also based on this file.