diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..ccb601a0 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,184 @@ +# editorconfig.org + +# top-most EditorConfig file +root = true + +# Default settings: +# A newline ending every file +# Use 4 spaces as indentation +[*] +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[project.json] +indent_size = 2 + +# C# files +[*.cs] +# 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_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 = one_less_than_current + +# Modifier preferences +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion + +# avoid this. unless absolutely necessary +dotnet_style_qualification_for_field = false:suggestion +dotnet_style_qualification_for_property = false:suggestion +dotnet_style_qualification_for_method = false:suggestion +dotnet_style_qualification_for_event = false:suggestion + +# Types: use keywords instead of BCL types, and permit var only when the type is clear +csharp_style_var_for_built_in_types = false:suggestion +csharp_style_var_when_type_is_apparent = false:none +csharp_style_var_elsewhere = false:suggestion +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion + +# name all constant fields using PascalCase +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style +dotnet_naming_symbols.constant_fields.applicable_kinds = field +dotnet_naming_symbols.constant_fields.required_modifiers = const +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +# static fields should have s_ prefix +dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion +dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields +dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style +dotnet_naming_symbols.static_fields.applicable_kinds = field +dotnet_naming_symbols.static_fields.required_modifiers = static +dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected +dotnet_naming_style.static_prefix_style.required_prefix = s_ +dotnet_naming_style.static_prefix_style.capitalization = camel_case + +# internal and private fields should be _camelCase +dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion +dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields +dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style +dotnet_naming_symbols.private_internal_fields.applicable_kinds = field +dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal +dotnet_naming_style.camel_case_underscore_style.required_prefix = _ +dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case + +# Code style defaults +csharp_using_directive_placement = outside_namespace:suggestion +dotnet_sort_system_directives_first = true +csharp_prefer_braces = true:refactoring +csharp_preserve_single_line_blocks = true:none +csharp_preserve_single_line_statements = false:none +csharp_prefer_static_local_function = true:suggestion +csharp_prefer_simple_using_statement = false:none +csharp_style_prefer_switch_expression = true:suggestion + +# Code quality +dotnet_style_readonly_field = true:suggestion +dotnet_code_quality_unused_parameters = non_public:suggestion + +# Expression-level preferences +dotnet_style_object_initializer = true:suggestion +dotnet_style_collection_initializer = true:suggestion +dotnet_style_explicit_tuple_names = true:suggestion +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_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:refactoring +dotnet_style_prefer_conditional_expression_over_return = true:refactoring +csharp_prefer_simple_default_expression = true:suggestion + +# Expression-bodied members +csharp_style_expression_bodied_methods = true:refactoring +csharp_style_expression_bodied_constructors = true:refactoring +csharp_style_expression_bodied_operators = true:refactoring +csharp_style_expression_bodied_properties = true:refactoring +csharp_style_expression_bodied_indexers = true:refactoring +csharp_style_expression_bodied_accessors = true:refactoring +csharp_style_expression_bodied_lambdas = true:refactoring +csharp_style_expression_bodied_local_functions = true:refactoring + +# Pattern matching +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_inlined_variable_declaration = true:suggestion + +# Null checking preferences +csharp_style_throw_expression = true:suggestion +csharp_style_conditional_delegate_call = true:suggestion + +# Other features +csharp_style_prefer_index_operator = false:none +csharp_style_prefer_range_operator = false:none +csharp_style_pattern_local_over_anonymous_function = false:none + +# Space preferences +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_around_declaration_statements = do_not_ignore +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +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_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false + +# Analyzers +dotnet_code_quality.ca1802.api_surface = private, internal + +# C++ Files +[*.{cpp,h,in}] +curly_bracket_next_line = true +indent_brace_style = Allman + +# Xml project files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}] +indent_size = 2 + +# Xml build files +[*.builds] +indent_size = 2 + +# Xml files +[*.{xml,stylecop,resx,ruleset}] +indent_size = 2 + +# Xml config files +[*.{props,targets,config,nuspec}] +indent_size = 2 + +# Shell scripts +[*.sh] +end_of_line = lf +[*.{cmd, bat}] +end_of_line = crlf \ No newline at end of file diff --git a/KeyVault.Acmebot/AddCertificateFunctions.cs b/KeyVault.Acmebot/AddCertificateFunctions.cs index f0e3cdbc..7644330d 100644 --- a/KeyVault.Acmebot/AddCertificateFunctions.cs +++ b/KeyVault.Acmebot/AddCertificateFunctions.cs @@ -41,4 +41,4 @@ public async Task AddCertificate_HttpStart( return starter.CreateCheckStatusResponse(req, instanceId, true); } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/Contracts/ISharedFunctions.cs b/KeyVault.Acmebot/Contracts/ISharedFunctions.cs index 534cc103..a0eace47 100644 --- a/KeyVault.Acmebot/Contracts/ISharedFunctions.cs +++ b/KeyVault.Acmebot/Contracts/ISharedFunctions.cs @@ -35,4 +35,4 @@ public interface ISharedFunctions Task FinalizeOrder((string[], OrderDetails) input); } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/GetDnsZonesFunctions.cs b/KeyVault.Acmebot/GetDnsZonesFunctions.cs index 49e25234..73a8e504 100644 --- a/KeyVault.Acmebot/GetDnsZonesFunctions.cs +++ b/KeyVault.Acmebot/GetDnsZonesFunctions.cs @@ -47,4 +47,4 @@ public async Task GetDnsZones_HttpStart( return await starter.WaitForCompletionOrCreateCheckStatusResponseAsync(req, instanceId, TimeSpan.FromMinutes(1)); } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/Internal/AccountKey.cs b/KeyVault.Acmebot/Internal/AccountKey.cs index 30afddc2..abee4a09 100644 --- a/KeyVault.Acmebot/Internal/AccountKey.cs +++ b/KeyVault.Acmebot/Internal/AccountKey.cs @@ -36,4 +36,4 @@ public IJwsTool GenerateSigner() throw new Exception($"Unknown or unsupported KeyType [{KeyType}]"); } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/Internal/X509Certificate2Extensions.cs b/KeyVault.Acmebot/Internal/X509Certificate2Extensions.cs index aa3bc429..374cff92 100644 --- a/KeyVault.Acmebot/Internal/X509Certificate2Extensions.cs +++ b/KeyVault.Acmebot/Internal/X509Certificate2Extensions.cs @@ -17,4 +17,4 @@ public static void ImportFromPem(this X509Certificate2Collection collection, byt collection.Add(new X509Certificate2(rawDataSpan.Slice(separator + 2).ToArray())); } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/LetsEncryptOptions.cs b/KeyVault.Acmebot/LetsEncryptOptions.cs index a0239edd..37377a95 100644 --- a/KeyVault.Acmebot/LetsEncryptOptions.cs +++ b/KeyVault.Acmebot/LetsEncryptOptions.cs @@ -10,4 +10,4 @@ public class LetsEncryptOptions public string Webhook { get; set; } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/Models/AcmeChallengeResult.cs b/KeyVault.Acmebot/Models/AcmeChallengeResult.cs index 9d31189c..e880b43d 100644 --- a/KeyVault.Acmebot/Models/AcmeChallengeResult.cs +++ b/KeyVault.Acmebot/Models/AcmeChallengeResult.cs @@ -6,4 +6,4 @@ public class AcmeChallengeResult public string DnsRecordName { get; set; } public string DnsRecordValue { get; set; } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/Models/AddCertificateRequest.cs b/KeyVault.Acmebot/Models/AddCertificateRequest.cs index 7237cd62..9ac33bba 100644 --- a/KeyVault.Acmebot/Models/AddCertificateRequest.cs +++ b/KeyVault.Acmebot/Models/AddCertificateRequest.cs @@ -4,4 +4,4 @@ public class AddCertificateRequest { public string[] Domains { get; set; } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/RenewCertificatesFunctions.cs b/KeyVault.Acmebot/RenewCertificatesFunctions.cs index d8789a3d..16b4c89b 100644 --- a/KeyVault.Acmebot/RenewCertificatesFunctions.cs +++ b/KeyVault.Acmebot/RenewCertificatesFunctions.cs @@ -62,4 +62,4 @@ public static async Task RenewCertificates_Timer( log.LogInformation($"Started orchestration with ID = '{instanceId}'."); } } -} \ No newline at end of file +} diff --git a/KeyVault.Acmebot/SharedFunctions.cs b/KeyVault.Acmebot/SharedFunctions.cs index 609fd947..8d189cda 100644 --- a/KeyVault.Acmebot/SharedFunctions.cs +++ b/KeyVault.Acmebot/SharedFunctions.cs @@ -294,4 +294,4 @@ private static string ExtractResourceGroup(string resourceId) return values[3]; } } -} \ No newline at end of file +}