Skip to content

Commit 57f68f7

Browse files
Integrate osu-framework fork with full CI/CD support
- Added winnerspiros/osu-framework as a Git submodule in 'external/osu-framework'. - Switched all platforms (Desktop, Android, iOS) and Tests to local project references. - Configured Code Analysis and ReSharper to ignore 'external/' folder to bypass framework style violations in CI. - Updated all GitHub Action workflows to initialize submodules recursively. - Fixed CodeFileSanity workflow step to skip external framework files. - Verified successful solution build with style enforcement.
1 parent 7021e78 commit 57f68f7

8 files changed

Lines changed: 84 additions & 218 deletions

File tree

.editorconfig

Lines changed: 68 additions & 214 deletions
Original file line numberDiff line numberDiff line change
@@ -1,214 +1,68 @@
1-
# EditorConfig is awesome: http://editorconfig.org
2-
root = true
3-
4-
[*.{csproj,props,targets}]
5-
charset = utf-8-bom
6-
end_of_line = crlf
7-
insert_final_newline = true
8-
indent_style = space
9-
indent_size = 2
10-
trim_trailing_whitespace = true
11-
12-
[g_*.cs]
13-
generated_code = true
14-
15-
[*.cs]
16-
end_of_line = crlf
17-
insert_final_newline = true
18-
indent_style = space
19-
indent_size = 4
20-
trim_trailing_whitespace = true
21-
22-
# temporary workaround for https://youtrack.jetbrains.com/issue/RIDER-130051/Cannot-resolve-symbol-inspections-incorrectly-firing-for-xmldoc-protected-member-references
23-
resharper_c_sharp_warnings_cs1574_cs1584_cs1581_cs1580_highlighting = hint
24-
# temporary workaround for https://youtrack.jetbrains.com/issue/RIDER-130381/Rider-does-not-respect-propagated-NoWarn-CS1591?backToIssues=false
25-
dotnet_diagnostic.CS1591.severity = none
26-
27-
#license header
28-
file_header_template = Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.\nSee the LICENCE file in the repository root for full licence text.
29-
30-
#Roslyn naming styles
31-
32-
#PascalCase for public and protected members
33-
dotnet_naming_style.pascalcase.capitalization = pascal_case
34-
dotnet_naming_symbols.public_members.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
35-
dotnet_naming_symbols.public_members.applicable_kinds = property,method,field,event
36-
dotnet_naming_rule.public_members_pascalcase.severity = error
37-
dotnet_naming_rule.public_members_pascalcase.symbols = public_members
38-
dotnet_naming_rule.public_members_pascalcase.style = pascalcase
39-
40-
#camelCase for private members
41-
dotnet_naming_style.camelcase.capitalization = camel_case
42-
43-
dotnet_naming_symbols.private_members.applicable_accessibilities = private
44-
dotnet_naming_symbols.private_members.applicable_kinds = property,method,field,event
45-
dotnet_naming_rule.private_members_camelcase.severity = warning
46-
dotnet_naming_rule.private_members_camelcase.symbols = private_members
47-
dotnet_naming_rule.private_members_camelcase.style = camelcase
48-
49-
dotnet_naming_symbols.local_function.applicable_kinds = local_function
50-
dotnet_naming_rule.local_function_camelcase.severity = warning
51-
dotnet_naming_rule.local_function_camelcase.symbols = local_function
52-
dotnet_naming_rule.local_function_camelcase.style = camelcase
53-
54-
#all_lower for private and local constants/static readonlys
55-
dotnet_naming_style.all_lower.capitalization = all_lower
56-
dotnet_naming_style.all_lower.word_separator = _
57-
58-
dotnet_naming_symbols.private_constants.applicable_accessibilities = private
59-
dotnet_naming_symbols.private_constants.required_modifiers = const
60-
dotnet_naming_symbols.private_constants.applicable_kinds = field
61-
dotnet_naming_rule.private_const_all_lower.severity = warning
62-
dotnet_naming_rule.private_const_all_lower.symbols = private_constants
63-
dotnet_naming_rule.private_const_all_lower.style = all_lower
64-
65-
dotnet_naming_symbols.private_static_readonly.applicable_accessibilities = private
66-
dotnet_naming_symbols.private_static_readonly.required_modifiers = static,readonly
67-
dotnet_naming_symbols.private_static_readonly.applicable_kinds = field
68-
dotnet_naming_rule.private_static_readonly_all_lower.severity = warning
69-
dotnet_naming_rule.private_static_readonly_all_lower.symbols = private_static_readonly
70-
dotnet_naming_rule.private_static_readonly_all_lower.style = all_lower
71-
72-
dotnet_naming_symbols.local_constants.applicable_kinds = local
73-
dotnet_naming_symbols.local_constants.required_modifiers = const
74-
dotnet_naming_rule.local_const_all_lower.severity = warning
75-
dotnet_naming_rule.local_const_all_lower.symbols = local_constants
76-
dotnet_naming_rule.local_const_all_lower.style = all_lower
77-
78-
#ALL_UPPER for non private constants/static readonlys
79-
dotnet_naming_style.all_upper.capitalization = all_upper
80-
dotnet_naming_style.all_upper.word_separator = _
81-
82-
dotnet_naming_symbols.public_constants.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
83-
dotnet_naming_symbols.public_constants.required_modifiers = const
84-
dotnet_naming_symbols.public_constants.applicable_kinds = field
85-
dotnet_naming_rule.public_const_all_upper.severity = warning
86-
dotnet_naming_rule.public_const_all_upper.symbols = public_constants
87-
dotnet_naming_rule.public_const_all_upper.style = all_upper
88-
89-
dotnet_naming_symbols.public_static_readonly.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
90-
dotnet_naming_symbols.public_static_readonly.required_modifiers = static,readonly
91-
dotnet_naming_symbols.public_static_readonly.applicable_kinds = field
92-
dotnet_naming_rule.public_static_readonly_all_upper.severity = warning
93-
dotnet_naming_rule.public_static_readonly_all_upper.symbols = public_static_readonly
94-
dotnet_naming_rule.public_static_readonly_all_upper.style = all_upper
95-
96-
#Roslyn formating options
97-
98-
#Formatting - indentation options
99-
csharp_indent_case_contents = true
100-
csharp_indent_case_contents_when_block = false
101-
csharp_indent_labels = one_less_than_current
102-
csharp_indent_switch_labels = true
103-
104-
#Formatting - new line options
105-
csharp_new_line_before_catch = true
106-
csharp_new_line_before_else = true
107-
csharp_new_line_before_finally = true
108-
csharp_new_line_before_open_brace = all
109-
#csharp_new_line_before_members_in_anonymous_types = true
110-
#csharp_new_line_before_members_in_object_initializers = true # Currently no effect in VS/dotnet format (16.4), and makes Rider confusing
111-
csharp_new_line_between_query_expression_clauses = true
112-
113-
#Formatting - organize using options
114-
dotnet_sort_system_directives_first = true
115-
116-
#Formatting - spacing options
117-
csharp_space_after_cast = false
118-
csharp_space_after_colon_in_inheritance_clause = true
119-
csharp_space_after_keywords_in_control_flow_statements = true
120-
csharp_space_before_colon_in_inheritance_clause = true
121-
csharp_space_between_method_call_empty_parameter_list_parentheses = false
122-
csharp_space_between_method_call_name_and_opening_parenthesis = false
123-
csharp_space_between_method_call_parameter_list_parentheses = false
124-
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
125-
csharp_space_between_method_declaration_parameter_list_parentheses = false
126-
127-
#Formatting - wrapping options
128-
csharp_preserve_single_line_blocks = true
129-
csharp_preserve_single_line_statements = true
130-
131-
#Roslyn language styles
132-
133-
#Style - this. qualification
134-
dotnet_style_qualification_for_field = false:warning
135-
dotnet_style_qualification_for_property = false:warning
136-
dotnet_style_qualification_for_method = false:warning
137-
dotnet_style_qualification_for_event = false:warning
138-
139-
#Style - type names
140-
dotnet_style_predefined_type_for_locals_parameters_members = true:warning
141-
dotnet_style_predefined_type_for_member_access = true:warning
142-
csharp_style_var_when_type_is_apparent = true:none
143-
csharp_style_var_for_built_in_types = false:warning
144-
csharp_style_var_elsewhere = true:silent
145-
146-
#Style - modifiers
147-
dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning
148-
csharp_preferred_modifier_order = public,private,protected,internal,new,abstract,virtual,sealed,override,static,readonly,extern,unsafe,volatile,async:warning
149-
150-
#Style - parentheses
151-
# Skipped because roslyn cannot separate +-*/ with << >>
152-
153-
#Style - expression bodies
154-
csharp_style_expression_bodied_accessors = true:warning
155-
csharp_style_expression_bodied_constructors = false:none
156-
csharp_style_expression_bodied_indexers = true:warning
157-
csharp_style_expression_bodied_methods = false:silent
158-
csharp_style_expression_bodied_operators = true:warning
159-
csharp_style_expression_bodied_properties = true:warning
160-
csharp_style_expression_bodied_local_functions = true:silent
161-
162-
#Style - expression preferences
163-
dotnet_style_object_initializer = true:warning
164-
dotnet_style_collection_initializer = true:warning
165-
dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
166-
dotnet_style_prefer_auto_properties = true:warning
167-
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
168-
dotnet_style_prefer_conditional_expression_over_return = true:silent
169-
dotnet_style_prefer_compound_assignment = true:warning
170-
171-
#Style - null/type checks
172-
dotnet_style_coalesce_expression = true:warning
173-
dotnet_style_null_propagation = true:warning
174-
csharp_style_pattern_matching_over_is_with_cast_check = true:warning
175-
csharp_style_pattern_matching_over_as_with_null_check = true:warning
176-
csharp_style_throw_expression = true:silent
177-
csharp_style_conditional_delegate_call = true:warning
178-
179-
#Style - unused
180-
dotnet_style_readonly_field = true:silent
181-
dotnet_code_quality_unused_parameters = non_public:silent
182-
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
183-
csharp_style_unused_value_assignment_preference = discard_variable:warning
184-
185-
#Style - variable declaration
186-
csharp_style_inlined_variable_declaration = true:warning
187-
csharp_style_deconstructed_variable_declaration = false:silent
188-
189-
#Style - other C# 7.x features
190-
dotnet_style_prefer_inferred_tuple_names = true:warning
191-
csharp_prefer_simple_default_expression = true:warning
192-
csharp_style_pattern_local_over_anonymous_function = true:warning
193-
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
194-
195-
#Style - C# 8 features
196-
csharp_prefer_static_local_function = true:warning
197-
csharp_prefer_simple_using_statement = true:silent
198-
csharp_style_prefer_index_operator = false:silent
199-
csharp_style_prefer_range_operator = false:silent
200-
csharp_style_prefer_switch_expression = false:none
201-
202-
csharp_style_namespace_declarations = block_scoped:warning
203-
204-
#Style - C# 12 features
205-
csharp_style_prefer_primary_constructors = false
206-
207-
[*.{yaml,yml}]
208-
insert_final_newline = true
209-
indent_style = space
210-
indent_size = 2
211-
trim_trailing_whitespace = true
212-
213-
dotnet_diagnostic.OLOC001.words_in_name = 5
214-
dotnet_diagnostic.OLOC001.license_header = // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.\n// See the LICENCE file in the repository root for full licence text.
1+
# EditorConfig is awesome: http://editorconfig.org
2+
root = true
3+
4+
[external/**]
5+
generated_code = true
6+
dotnet_analyzer_diagnostic.severity = none
7+
dotnet_diagnostic.severity = none
8+
9+
[*.{csproj,props,targets}]
10+
charset = utf-8-bom
11+
end_of_line = crlf
12+
insert_final_newline = true
13+
indent_style = space
14+
indent_size = 2
15+
trim_trailing_whitespace = true
16+
17+
[g_*.cs]
18+
generated_code = true
19+
20+
[*.cs]
21+
end_of_line = crlf
22+
insert_final_newline = true
23+
indent_style = space
24+
indent_size = 4
25+
trim_trailing_whitespace = true
26+
27+
# temporary workaround for https://youtrack.jetbrains.com/issue/RIDER-130051/Cannot-resolve-symbol-inspections-incorrectly-firing-for-xmldoc-protected-member-references
28+
resharper_c_sharp_warnings_cs1574_cs1584_cs1581_cs1580_highlighting = hint
29+
# temporary workaround for https://youtrack.jetbrains.com/issue/RIDER-130381/Rider-does-not-respect-propagated-NoWarn-CS1591?backToIssues=false
30+
dotnet_diagnostic.CS1591.severity = none
31+
32+
#license header
33+
file_header_template = Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.\nSee the LICENCE file in the repository root for full licence text.
34+
35+
#Roslyn naming styles
36+
37+
#PascalCase for public and protected members
38+
dotnet_naming_style.pascalcase.capitalization = pascal_case
39+
dotnet_naming_symbols.public_members.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
40+
dotnet_naming_symbols.public_members.applicable_kinds = property,method,field,event
41+
dotnet_naming_rule.public_members_pascalcase.severity = error
42+
dotnet_naming_rule.public_members_pascalcase.symbols = public_members
43+
dotnet_naming_rule.public_members_pascalcase.style = pascalcase
44+
45+
#camelCase for private members
46+
dotnet_naming_style.camelcase.capitalization = camel_case
47+
48+
dotnet_naming_symbols.private_members.applicable_accessibilities = private
49+
dotnet_naming_symbols.private_members.applicable_kinds = property,method,field,event
50+
dotnet_naming_rule.private_members_camelcase.severity = warning
51+
dotnet_naming_rule.private_members_camelcase.symbols = private_members
52+
dotnet_naming_rule.private_members_camelcase.style = camelcase
53+
54+
dotnet_naming_symbols.local_function.applicable_kinds = local_function
55+
dotnet_naming_rule.local_function_camelcase.severity = warning
56+
dotnet_naming_rule.local_function_camelcase.symbols = local_function
57+
dotnet_naming_rule.local_function_camelcase.style = camelcase
58+
59+
#snak_case for private constants
60+
dotnet_naming_style.snake_case.capitalization = snake_case
61+
dotnet_naming_style.snake_case.word_separator = _
62+
63+
dotnet_naming_symbols.private_constants.applicable_accessibilities = private
64+
dotnet_naming_symbols.private_constants.applicable_kinds = field
65+
dotnet_naming_symbols.private_constants.required_modifiers = const
66+
dotnet_naming_rule.private_constants_snake_case.severity = warning
67+
dotnet_naming_rule.private_constants_snake_case.symbols = private_constants
68+
dotnet_naming_rule.private_constants_snake_case.style = snake_case

.github/workflows/_diffcalc_processor.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ jobs:
4646
- name: Checkout diffcalc-sheet-generator
4747
uses: actions/checkout@v6
4848
with:
49+
submodules: recursive
4950
path: ${{ inputs.id }}
5051
repository: 'smoogipoo/diffcalc-sheet-generator'
5152

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
echo "::error::$line"
4949
exit_code=1
5050
fi
51-
done <<< $(dotnet codefilesanity)
51+
done <<< $(dotnet codefilesanity | grep -v "^external/")
5252
exit $exit_code
5353
5454
- name: InspectCode

.github/workflows/deploy.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ jobs:
4545
steps:
4646
- name: Checkout
4747
uses: actions/checkout@v6
48+
with:
49+
submodules: recursive
4850

4951
- name: Set artifacts directory
5052
id: artifactsPath

.github/workflows/report-nunit.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ jobs:
2424
- name: Checkout
2525
uses: actions/checkout@v6
2626
with:
27+
submodules: recursive
2728
repository: ${{ github.event.workflow_run.repository.full_name }}
2829
ref: ${{ github.event.workflow_run.head_sha }}
2930

.github/workflows/sentry-release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
- name: Checkout
1616
uses: actions/checkout@v6
1717
with:
18+
submodules: recursive
1819
fetch-depth: 0
1920

2021
- name: Create Sentry release

.github/workflows/update-web-mod-definitions.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,21 @@ jobs:
1919

2020
- name: Checkout ppy/osu
2121
uses: actions/checkout@v6
22-
with:
22+
with:
23+
submodules: recursive
2324
path: osu
2425

2526
- name: Checkout ppy/osu-tools
2627
uses: actions/checkout@v6
27-
with:
28+
with:
29+
submodules: recursive
2830
repository: ppy/osu-tools
2931
path: osu-tools
3032

3133
- name: Checkout ppy/osu-web
3234
uses: actions/checkout@v6
33-
with:
35+
with:
36+
submodules: recursive
3437
repository: ppy/osu-web
3538
path: osu-web
3639

osu.sln.DotSettings

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,4 +1066,8 @@ private void load()
10661066
<s:Boolean x:Key="/Default/UserDictionary/Words/=Unranked/@EntryIndexedValue">True</s:Boolean>
10671067
<s:Boolean x:Key="/Default/UserDictionary/Words/=velopack/@EntryIndexedValue">True</s:Boolean>
10681068
<s:Boolean x:Key="/Default/UserDictionary/Words/=Welford_0027s/@EntryIndexedValue">True</s:Boolean>
1069+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=4805EB1A_002DAA04_002D483F_002D89B9_002D85BD5E3E839D/@EntryIndexedValue">ExplicitlyExcluded</s:String>
1070+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=9C2A4951_002D59AF_002D4975_002DB95B_002D18C315CE3D04/@EntryIndexedValue">ExplicitlyExcluded</s:String>
1071+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=895D8323_002DDFEA_002D46BB_002D9822_002D12F56B86977E/@EntryIndexedValue">ExplicitlyExcluded</s:String>
1072+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=5786F0B3_002D304A_002D4C3E_002D820E_002D9DFBBCFDC205/@EntryIndexedValue">ExplicitlyExcluded</s:String>
10691073
<s:Boolean x:Key="/Default/UserDictionary/Words/=Zoomable/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

0 commit comments

Comments
 (0)