-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add readme, editorconfig, gitattributes
- Loading branch information
1 parent
ae0e7ae
commit 0711cdf
Showing
4 changed files
with
382 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,346 @@ | ||
# Version 20221025 | ||
# This file does not inherit .editorconfig settings from higher directories - where possible, place it at the root of the repository | ||
|
||
# References: | ||
# - To learn more about .editorconfig see https://aka.ms/editorconfigdocs | ||
# - Set rule severity https://docs.microsoft.com/en-us/visualstudio/code-quality/use-roslyn-analyzers?view=vs-2019#set-rule-severity-in-an-editorconfig-file | ||
# - Configure analyzer rules https://github.com/dotnet/roslyn-analyzers/blob/main/docs/Analyzer%20Configuration.md | ||
|
||
############################### | ||
# Core EditorConfig Options # | ||
############################### | ||
root = true | ||
|
||
# All files | ||
[*] | ||
indent_style = space | ||
# Line endings are different from Visual Studio for Windows .editorconfig template defaults; see comments in EOL.gitattributes for rationale | ||
end_of_line = lf | ||
|
||
# Code files | ||
[*.{cs,csx,vb,vbx}] | ||
indent_size = 4 | ||
insert_final_newline = true | ||
charset = utf-8-bom | ||
|
||
############################################################### | ||
# Different from VS2022 .NET .editorconfig template defaults # | ||
# Defaults are left in their original location, commented out # | ||
# with comment prefix "# Default: <original>" # | ||
############################################################### | ||
|
||
# Note that choices to deviate from the default are governed by these goals: | ||
# 1) Remove noise | ||
# 2) Increase conciseness | ||
|
||
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 | ||
|
||
dotnet_style_predefined_type_for_locals_parameters_members = true:warning | ||
dotnet_style_predefined_type_for_member_access = true:warning | ||
|
||
dotnet_style_require_accessibility_modifiers = omit_if_default:warning | ||
dotnet_style_readonly_field = true:warning | ||
|
||
csharp_style_expression_bodied_methods = true:warning | ||
csharp_style_expression_bodied_constructors = true:warning | ||
csharp_style_expression_bodied_operators = true:warning | ||
csharp_style_expression_bodied_properties = true:warning | ||
csharp_style_expression_bodied_indexers = true:warning | ||
csharp_style_expression_bodied_accessors = true:warning | ||
|
||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning | ||
dotnet_style_prefer_inferred_tuple_names = true:warning | ||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning | ||
dotnet_style_prefer_auto_properties = true:warning | ||
dotnet_style_prefer_conditional_expression_over_assignment = true # We want true:suggestion but that does not work, so we specify the severity in the next line: | ||
dotnet_diagnostic.IDE0045.severity = suggestion | ||
dotnet_style_prefer_conditional_expression_over_return = true # We want true:suggestion but that does not work, so we specify the severity in the next line: | ||
dotnet_diagnostic.IDE0046.severity = suggestion | ||
|
||
csharp_style_deconstructed_variable_declaration = true:warning | ||
csharp_prefer_simple_default_expression = true:warning | ||
csharp_style_pattern_local_over_anonymous_function = true:warning | ||
csharp_style_inlined_variable_declaration = true:warning | ||
|
||
csharp_using_directive_placement = outside_namespace:warning | ||
# Placing usings outside namespaces lets the closest parent namespace control type name match | ||
# It can also make attribute usage more concise | ||
# See https://stackoverflow.com/questions/125319/should-using-directives-be-inside-or-outside-the-namespace | ||
csharp_style_namespace_declarations = file_scoped:warning | ||
csharp_style_prefer_method_group_conversion = true:warning | ||
|
||
csharp_style_expression_bodied_lambdas = true:warning | ||
csharp_style_expression_bodied_local_functions = false:warning | ||
csharp_style_prefer_null_check_over_type_check = true:warning | ||
csharp_style_prefer_local_over_anonymous_function = true:warning | ||
csharp_style_prefer_index_operator = true:warning | ||
csharp_style_prefer_range_operator = true:warning | ||
csharp_style_implicit_object_creation_when_type_is_apparent = true:warning | ||
csharp_style_prefer_tuple_swap = true:warning | ||
csharp_style_unused_value_assignment_preference = discard_variable:warning | ||
csharp_style_unused_value_expression_statement_preference = discard_variable:warning | ||
csharp_prefer_static_local_function = true:warning | ||
|
||
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = warning | ||
|
||
csharp_style_var_for_built_in_types = false:warning | ||
csharp_style_var_when_type_is_apparent = true:warning | ||
csharp_style_var_elsewhere = true:warning | ||
|
||
dotnet_analyzer_diagnostic.severity = error | ||
dotnet_diagnostic.CA1848.severity = suggestion # Not every logging statement needs to be optimized for performance | ||
dotnet_diagnostic.CA1708.severity = none # CA1708 is not relevant because we do not design binary API's for other languages than C#. See https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1708 | ||
dotnet_diagnostic.CA1716.severity = none # CA1716 is not relevant because we do not design binary API's for other languages than C#. See https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1716 | ||
dotnet_diagnostic.IDE0130.severity = suggestion # IDE0130 "Namespace does not match folder structure" can be deviated from to prevent overstructuring | ||
dotnet_diagnostic.IDE0055.severity = silent # Nonstandard whitespace formatting can be used to improve readability | ||
dotnet_diagnostic.IDE0072.severity = suggestion | ||
# Populate switch: switch options should be exhaustive for all expected functionality including expected errors, | ||
# while truly unexpected returns should throw an exception. Since switch automatically throws a SwitchExpressionException, | ||
# it is valid to not explicitly code cases that throw an exception to indicate the return is truly unexpected. | ||
|
||
# Start of NO underscore prefix on private fields | ||
# Define the 'private_fields' symbol group: | ||
dotnet_naming_symbols.private_fields.applicable_kinds = field | ||
dotnet_naming_symbols.private_fields.applicable_accessibilities = private | ||
|
||
# Define the 'notunderscored' naming style | ||
dotnet_naming_style.notunderscored.capitalization = camel_case | ||
dotnet_naming_style.notunderscored.required_prefix = | ||
|
||
# Define the 'private_fields_notunderscored' naming rule | ||
dotnet_naming_rule.private_fields_notunderscored.symbols = private_fields | ||
dotnet_naming_rule.private_fields_notunderscored.style = notunderscored | ||
dotnet_naming_rule.private_fields_notunderscored.severity = error | ||
# End of No underscore prefix on private fields | ||
|
||
############################### | ||
# .NET Coding Conventions # | ||
############################### | ||
[*.{cs,vb}] | ||
# Organize usings | ||
dotnet_sort_system_directives_first = true | ||
|
||
# this. preferences | ||
# Default: dotnet_style_qualification_for_field = false:silent | ||
# Default: dotnet_style_qualification_for_property = false:silent | ||
# Default: dotnet_style_qualification_for_method = false:silent | ||
# Default: dotnet_style_qualification_for_event = false:silent | ||
|
||
# Language keywords vs BCL types preferences | ||
# Default: dotnet_style_predefined_type_for_locals_parameters_members = true:silent | ||
# Default: dotnet_style_predefined_type_for_member_access = true:silent | ||
# Parentheses preferences | ||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent | ||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent | ||
# Modifier preferences | ||
# Default: dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent | ||
# Default: dotnet_style_readonly_field = true: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_null_propagation = true:suggestion | ||
dotnet_style_coalesce_expression = true:suggestion | ||
# Default: dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent | ||
# Default: dotnet_style_prefer_inferred_tuple_names = true:suggestion | ||
# Default: dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion | ||
# Default: dotnet_style_prefer_auto_properties = true:silent | ||
# Default: dotnet_style_prefer_conditional_expression_over_assignment = true:silent | ||
# Default: dotnet_style_prefer_conditional_expression_over_return = true:silent | ||
|
||
############################### | ||
# Naming Conventions # | ||
############################### | ||
# Style Definitions | ||
dotnet_naming_style.pascal_case_style.capitalization = pascal_case | ||
# Use PascalCase for constant fields | ||
# Default: 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.applicable_accessibilities = * | ||
dotnet_naming_symbols.constant_fields.required_modifiers = const | ||
############################### | ||
# C# Coding Conventions # | ||
############################### | ||
[*.cs] | ||
# var preferences | ||
# Default: csharp_style_var_for_built_in_types = true:silent | ||
# Default: csharp_style_var_when_type_is_apparent = true:silent | ||
# Default: csharp_style_var_elsewhere = true:silent | ||
|
||
# Expression-bodied members | ||
# Default: csharp_style_expression_bodied_methods = false:silent | ||
# Default: csharp_style_expression_bodied_constructors = false:silent | ||
# Default: csharp_style_expression_bodied_operators = false:silent | ||
# Default: csharp_style_expression_bodied_properties = true:silent | ||
# Default: csharp_style_expression_bodied_indexers = true:silent | ||
# Default: csharp_style_expression_bodied_accessors = true:silent | ||
|
||
# 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 | ||
# 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,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion | ||
# Expression-level preferences | ||
csharp_prefer_braces = when_multiline:silent | ||
# Default: csharp_style_deconstructed_variable_declaration = true:suggestion | ||
# Default: csharp_prefer_simple_default_expression = true:suggestion | ||
# Default: csharp_style_pattern_local_over_anonymous_function = true:suggestion | ||
# Default: csharp_style_inlined_variable_declaration = true:suggestion | ||
############################### | ||
# C# Formatting Rules # | ||
############################### | ||
# 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 = flush_left | ||
# Space preferences | ||
csharp_space_after_cast = false | ||
csharp_space_after_keywords_in_control_flow_statements = true | ||
csharp_space_between_method_call_parameter_list_parentheses = false | ||
csharp_space_between_method_declaration_parameter_list_parentheses = false | ||
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_empty_parameter_list_parentheses = false | ||
csharp_space_between_method_call_name_and_opening_parenthesis = false | ||
csharp_space_between_method_call_empty_parameter_list_parentheses = false | ||
# Wrapping preferences | ||
csharp_preserve_single_line_statements = true | ||
csharp_preserve_single_line_blocks = true | ||
# Default: csharp_using_directive_placement = outside_namespace:silent | ||
csharp_prefer_simple_using_statement = true:suggestion | ||
# Default: csharp_style_namespace_declarations = block_scoped:silent | ||
# Default: csharp_style_prefer_method_group_conversion = true:silent | ||
csharp_style_prefer_top_level_statements = true:silent | ||
csharp_style_expression_bodied_methods = true:warning | ||
csharp_style_expression_bodied_constructors = true:warning | ||
csharp_style_expression_bodied_operators = true:warning | ||
csharp_style_expression_bodied_properties = true:warning | ||
csharp_style_expression_bodied_indexers = true:warning | ||
csharp_style_expression_bodied_accessors = true:warning | ||
# Default: csharp_style_expression_bodied_lambdas = true:silent | ||
# Default: csharp_style_expression_bodied_local_functions = false:silent | ||
# Default: csharp_style_prefer_null_check_over_type_check = true:suggestion | ||
# Default: csharp_style_prefer_local_over_anonymous_function = true:suggestion | ||
# Default: csharp_style_prefer_index_operator = true:suggestion | ||
# Default: csharp_style_prefer_range_operator = true:suggestion | ||
# Default: csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion | ||
# Default: csharp_style_prefer_tuple_swap = true:suggestion | ||
# Default: csharp_style_unused_value_assignment_preference = discard_variable:suggestion | ||
# Default: csharp_style_unused_value_expression_statement_preference = discard_variable:silent | ||
# Default: csharp_prefer_static_local_function = true:suggestion | ||
csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent | ||
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent | ||
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent | ||
csharp_style_prefer_parameter_null_checking = true:suggestion | ||
############################### | ||
# VB Coding Conventions # | ||
############################### | ||
[*.vb] | ||
# Modifier preferences | ||
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion | ||
[*.{cs,vb}] | ||
#### Naming styles #### | ||
|
||
# Naming rules | ||
|
||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning | ||
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 = warning | ||
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 = warning | ||
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 | ||
dotnet_style_prefer_simplified_boolean_expressions = true:warning | ||
dotnet_style_prefer_compound_assignment = true:warning | ||
dotnet_style_prefer_simplified_interpolation = true:warning | ||
dotnet_style_namespace_match_folder = false:silent | ||
dotnet_style_allow_multiple_blank_lines_experimental = true:silent | ||
dotnet_style_allow_statement_immediately_after_block_experimental = true:silent | ||
dotnet_code_quality_unused_parameters = all:warning | ||
|
||
# Additional settings exported from VS 17.4.0 Preview 4.0: | ||
csharp_indent_block_contents = true | ||
csharp_indent_braces = false | ||
csharp_indent_labels = one_less_than_current | ||
|
||
csharp_space_after_comma = true | ||
csharp_space_after_dot = false | ||
csharp_space_after_semicolon_in_for_statement = true | ||
|
||
csharp_space_around_declaration_statements = false | ||
|
||
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_declaration_name_and_open_parenthesis = false | ||
csharp_space_between_square_brackets = false | ||
|
||
csharp_style_prefer_not_pattern = true | ||
csharp_style_prefer_readonly_struct = true | ||
csharp_style_prefer_switch_expression = true | ||
csharp_style_prefer_utf8_string_literals = true | ||
|
||
dotnet_remove_unnecessary_suppression_exclusions = none | ||
dotnet_separate_import_directive_groups = false | ||
|
||
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# We want consistent line endings on LF in the repo and in every machine's working folders, | ||
# but only for specific files that we know are safe to change line endings in. | ||
# With .NET and .NET IDE's being crossplatform, the repo should be prepared for e.g. devs working on Mac and Windows machines. | ||
# By specifying this in .gitattributes, we override any individual machine settings that may be set via "git config --global core.autocrlf ..." | ||
# In addition, we use .editorconfig "end_of_line = lf" to create LF line endings while editing, avoiding the need for conversion altogether. | ||
|
||
|
||
# First, disable automatic line ending conversion for all file types: | ||
* -text | ||
|
||
# Then, enable automatic line ending conversion only for the files where we want it: | ||
*.cmd text eol=lf | ||
*.cs text eol=lf | ||
*.csproj text eol=lf | ||
*.json text eol=lf | ||
*.md text eol=lf | ||
*.msbuild text eol=lf | ||
*.ps1 text eol=lf | ||
*.tt text eol=lf | ||
*.xaml text eol=lf | ||
*.xml text eol=lf | ||
*.editorconfig text eol=lf | ||
*.gitattributes text eol=lf | ||
*.gitignore text eol=lf | ||
*.yaml text eol=lf | ||
|
||
# Generated by tools, reduce "ghost changes" for most common case: Windows = CRLF | ||
*.sln text eol=crlf | ||
SonarLint.xml text eol=crlf | ||
*.ruleset text eol=crlf | ||
*.slconfig text eol=crlf | ||
|
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# <img src="img/CSharp-Toolkit-Icon.png" alt="Backend Toolkit" width="64px" />Orleans.Multiservice | ||
Low-friction logical service separation in Microsoft Orleans 7: avoid or postpone the development overhead of separate microservices | ||
|
||
*WIP - initial release eta Nov 2022* |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.