Skip to content

Commit 686a548

Browse files
authored
Add .editorconfig and stylecop (#83)
* Add .editorconfig and stylecop * Fine-tune rules * Update stylecop.ruleset
1 parent fb1746f commit 686a548

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+509
-258
lines changed

.editorconfig

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
# Remove the line below if you want to inherit .editorconfig settings from higher directories
2+
root = true
3+
4+
# C# files
5+
[*.cs]
6+
7+
#### Core EditorConfig Options ####
8+
9+
# Indentation and spacing
10+
indent_size = 4
11+
indent_style = space
12+
tab_width = 4
13+
14+
# New line preferences
15+
end_of_line = crlf
16+
insert_final_newline = false
17+
18+
#### .NET Coding Conventions ####
19+
20+
# Organize usings
21+
dotnet_separate_import_directive_groups = true
22+
dotnet_sort_system_directives_first = true
23+
24+
# this. and Me. preferences
25+
dotnet_style_qualification_for_event = false:suggestion
26+
dotnet_style_qualification_for_field = false:suggestion
27+
dotnet_style_qualification_for_method = false:suggestion
28+
dotnet_style_qualification_for_property = false:suggestion
29+
30+
# Language keywords vs BCL types preferences
31+
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
32+
dotnet_style_predefined_type_for_member_access = true:suggestion
33+
34+
# Parentheses preferences
35+
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
36+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
37+
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:suggestion
38+
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
39+
40+
# Modifier preferences
41+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
42+
43+
# Expression-level preferences
44+
csharp_style_deconstructed_variable_declaration = true:suggestion
45+
csharp_style_inlined_variable_declaration = true:suggestion
46+
csharp_style_throw_expression = true:suggestion
47+
dotnet_style_coalesce_expression = true:suggestion
48+
dotnet_style_collection_initializer = true:suggestion
49+
dotnet_style_explicit_tuple_names = true:suggestion
50+
dotnet_style_null_propagation = true:suggestion
51+
dotnet_style_object_initializer = true:suggestion
52+
dotnet_style_prefer_auto_properties = true:suggestion
53+
dotnet_style_prefer_compound_assignment = true:suggestion
54+
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
55+
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
56+
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
57+
dotnet_style_prefer_inferred_tuple_names = true:suggestion
58+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
59+
60+
# Field preferences
61+
dotnet_style_readonly_field = true:suggestion
62+
63+
# Parameter preferences
64+
dotnet_code_quality_unused_parameters = all:suggestion
65+
66+
#### C# Coding Conventions ####
67+
68+
# var preferences
69+
csharp_style_var_elsewhere = true:suggestion
70+
csharp_style_var_for_built_in_types = true:suggestion
71+
csharp_style_var_when_type_is_apparent = true:suggestion
72+
73+
# Expression-bodied members
74+
csharp_style_expression_bodied_accessors = when_on_single_line:suggestion
75+
csharp_style_expression_bodied_constructors = when_on_single_line:suggestion
76+
csharp_style_expression_bodied_indexers = when_on_single_line:suggestion
77+
csharp_style_expression_bodied_lambdas = when_on_single_line:suggestion
78+
csharp_style_expression_bodied_local_functions = when_on_single_line:suggestion
79+
csharp_style_expression_bodied_methods = when_on_single_line:suggestion
80+
csharp_style_expression_bodied_operators = when_on_single_line:suggestion
81+
csharp_style_expression_bodied_properties = when_on_single_line:suggestion
82+
83+
# Pattern matching preferences
84+
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
85+
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
86+
87+
# Null-checking preferences
88+
csharp_style_conditional_delegate_call = true:suggestion
89+
90+
# Modifier preferences
91+
csharp_prefer_static_local_function = true:suggestion
92+
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
93+
94+
# Code-block preferences
95+
csharp_prefer_braces = true:suggestion
96+
csharp_prefer_simple_using_statement = true:suggestion
97+
98+
# Expression-level preferences
99+
csharp_prefer_simple_default_expression = true:suggestion
100+
csharp_style_pattern_local_over_anonymous_function = true:suggestion
101+
csharp_style_prefer_index_operator = true:suggestion
102+
csharp_style_prefer_range_operator = true:suggestion
103+
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
104+
csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion
105+
106+
# 'using' directive preferences
107+
csharp_using_directive_placement = outside_namespace:suggestion
108+
109+
#### C# Formatting Rules ####
110+
111+
# New line preferences
112+
csharp_new_line_before_catch = true
113+
csharp_new_line_before_else = true
114+
csharp_new_line_before_finally = true
115+
csharp_new_line_before_members_in_anonymous_types = true
116+
csharp_new_line_before_members_in_object_initializers = true
117+
csharp_new_line_before_open_brace = all
118+
csharp_new_line_between_query_expression_clauses = true
119+
120+
# Indentation preferences
121+
csharp_indent_block_contents = true
122+
csharp_indent_braces = false
123+
csharp_indent_case_contents = true
124+
csharp_indent_case_contents_when_block = true
125+
csharp_indent_labels = one_less_than_current
126+
csharp_indent_switch_labels = true
127+
128+
# Space preferences
129+
csharp_space_after_cast = false
130+
csharp_space_after_colon_in_inheritance_clause = true
131+
csharp_space_after_comma = true
132+
csharp_space_after_dot = false
133+
csharp_space_after_keywords_in_control_flow_statements = true
134+
csharp_space_after_semicolon_in_for_statement = true
135+
csharp_space_around_binary_operators = before_and_after
136+
csharp_space_around_declaration_statements = false
137+
csharp_space_before_colon_in_inheritance_clause = true
138+
csharp_space_before_comma = false
139+
csharp_space_before_dot = false
140+
csharp_space_before_open_square_brackets = false
141+
csharp_space_before_semicolon_in_for_statement = false
142+
csharp_space_between_empty_square_brackets = false
143+
csharp_space_between_method_call_empty_parameter_list_parentheses = false
144+
csharp_space_between_method_call_name_and_opening_parenthesis = false
145+
csharp_space_between_method_call_parameter_list_parentheses = false
146+
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
147+
csharp_space_between_method_declaration_name_and_open_parenthesis = false
148+
csharp_space_between_method_declaration_parameter_list_parentheses = false
149+
csharp_space_between_parentheses = false
150+
csharp_space_between_square_brackets = false
151+
152+
# Wrapping preferences
153+
csharp_preserve_single_line_blocks = true
154+
csharp_preserve_single_line_statements = true
155+
156+
#### Naming styles ####
157+
158+
# Naming rules
159+
160+
dotnet_naming_rule.интерфейс_should_be_начинается_с_i.severity = suggestion
161+
dotnet_naming_rule.интерфейс_should_be_начинается_с_i.symbols = интерфейс
162+
dotnet_naming_rule.интерфейс_should_be_начинается_с_i.style = начинается_с_i
163+
164+
dotnet_naming_rule.типы_should_be_всечастиспрописнойбуквы.severity = suggestion
165+
dotnet_naming_rule.типы_should_be_всечастиспрописнойбуквы.symbols = типы
166+
dotnet_naming_rule.типы_should_be_всечастиспрописнойбуквы.style = всечастиспрописнойбуквы
167+
168+
dotnet_naming_rule.не_являющиеся_полем_члены_should_be_всечастиспрописнойбуквы.severity = suggestion
169+
dotnet_naming_rule.не_являющиеся_полем_члены_should_be_всечастиспрописнойбуквы.symbols = не_являющиеся_полем_члены
170+
dotnet_naming_rule.не_являющиеся_полем_члены_should_be_всечастиспрописнойбуквы.style = всечастиспрописнойбуквы
171+
172+
# Symbol specifications
173+
174+
dotnet_naming_symbols.интерфейс.applicable_kinds = interface
175+
dotnet_naming_symbols.интерфейс.applicable_accessibilities = public, internal, private, protected, protected_internal
176+
dotnet_naming_symbols.интерфейс.required_modifiers =
177+
178+
dotnet_naming_symbols.типы.applicable_kinds = class, struct, interface, enum
179+
dotnet_naming_symbols.типы.applicable_accessibilities = public, internal, private, protected, protected_internal
180+
dotnet_naming_symbols.типы.required_modifiers =
181+
182+
dotnet_naming_symbols.не_являющиеся_полем_члены.applicable_kinds = property, event, method
183+
dotnet_naming_symbols.не_являющиеся_полем_члены.applicable_accessibilities = public, internal, private, protected, protected_internal
184+
dotnet_naming_symbols.не_являющиеся_полем_члены.required_modifiers =
185+
186+
# Naming styles
187+
188+
dotnet_naming_style.всечастиспрописнойбуквы.required_prefix =
189+
dotnet_naming_style.всечастиспрописнойбуквы.required_suffix =
190+
dotnet_naming_style.всечастиспрописнойбуквы.word_separator =
191+
dotnet_naming_style.всечастиспрописнойбуквы.capitalization = pascal_case
192+
193+
dotnet_naming_style.начинается_с_i.required_prefix = I
194+
dotnet_naming_style.начинается_с_i.required_suffix =
195+
dotnet_naming_style.начинается_с_i.word_separator =
196+
dotnet_naming_style.начинается_с_i.capitalization = pascal_case

Algorithms.Tests/Algorithms.Tests.csproj

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,15 @@
55
<IsPackable>false</IsPackable>
66
<LangVersion>default</LangVersion>
77
<NullableContextOptions>disable</NullableContextOptions>
8+
<CodeAnalysisRuleSet>..\stylecop.ruleset</CodeAnalysisRuleSet>
9+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
810
</PropertyGroup>
911

12+
<ItemGroup>
13+
<AdditionalFiles Include="..\stylecop.json" />
14+
<ProjectReference Include="..\Algorithms\Algorithms.csproj" />
15+
</ItemGroup>
16+
1017
<ItemGroup>
1118
<PackageReference Include="coverlet.collector" Version="1.0.0">
1219
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -17,8 +24,4 @@
1724
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.1.1" />
1825
</ItemGroup>
1926

20-
<ItemGroup>
21-
<ProjectReference Include="..\Algorithms\Algorithms.csproj" />
22-
</ItemGroup>
23-
2427
</Project>

Algorithms.Tests/Compressors/HuffmanCompressorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using Algorithms.Compressors;
1+
using System;
2+
using Algorithms.Compressors;
23
using Algorithms.Sorters;
34
using NUnit.Framework;
45
using NUnit.Framework.Internal;
5-
using System;
66

77
namespace Algorithms.Tests.Compressors
88
{

Algorithms.Tests/Compressors/TranslatorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
using Algorithms.Compressors;
1+
using System.Collections.Generic;
2+
using Algorithms.Compressors;
23
using NUnit.Framework;
3-
using System.Collections.Generic;
44

55
namespace Algorithms.Tests.Compressors
66
{

Algorithms.Tests/Encoders/CaesarEncoderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
using Algorithms.Encoders;
1+
using System;
2+
using Algorithms.Encoders;
23
using NUnit.Framework;
34
using NUnit.Framework.Internal;
4-
using System;
55

66
namespace Algorithms.Tests.Encoders
77
{

Algorithms.Tests/Knapsack/NaiveKnapsackSolverTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using Algorithms.Knapsack;
1+
using System;
2+
using System.Linq;
3+
using Algorithms.Knapsack;
24
using NUnit.Framework;
35
using NUnit.Framework.Internal;
4-
using System;
5-
using System.Linq;
66

77
namespace Algorithms.Tests.Knapsack
88
{

Algorithms.Tests/Other/SieveOfEratosthenesTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
using Algorithms.Other;
1+
using System.Numerics;
2+
using Algorithms.Other;
23
using NUnit.Framework;
34
using NUnit.Framework.Internal;
4-
using System.Numerics;
55

66
namespace Algorithms.Tests.Other
77
{

Algorithms.Tests/Search/LinearSearcherTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using Algorithms.Search;
1+
using System;
2+
using System.Linq;
3+
using Algorithms.Search;
24
using NUnit.Framework;
35
using NUnit.Framework.Internal;
4-
using System;
5-
using System.Linq;
66

77
namespace Algorithms.Tests.Search
88
{
@@ -50,7 +50,7 @@ public void Find_ItemMissing_ItemNotFoundExceptionThrown([Random(0, 1_000_000, 1
5050

5151
// Act
5252
// Assert
53-
Assert.Throws(typeof(ItemNotFoundException), () => searcher.Find(arrayToSearch, x => false));
53+
_ = Assert.Throws(typeof(ItemNotFoundException), () => searcher.Find(arrayToSearch, x => false));
5454
}
5555

5656
[Test]

Algorithms.Tests/Sorters/BinaryInsertionSorterTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using Algorithms.Sorters;
1+
using System;
2+
using Algorithms.Sorters;
23
using Algorithms.Tests.Helpers;
34
using NUnit.Framework;
45
using NUnit.Framework.Internal;
5-
using System;
66

77
namespace Algorithms.Tests.Sorters
88
{

Algorithms.Tests/Sorters/BogoSorterTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using Algorithms.Sorters;
1+
using System;
2+
using Algorithms.Sorters;
23
using Algorithms.Tests.Helpers;
34
using NUnit.Framework;
45
using NUnit.Framework.Internal;
5-
using System;
66

77
namespace Algorithms.Tests.Sorters
88
{

0 commit comments

Comments
 (0)