diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..694437a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,168 @@
+root = true
+
+[*]
+indent_style = tab
+tab_width = 4
+indent_size = tab
+
+insert_final_newline = true
+end_of_line = crlf
+
+dotnet_separate_import_directive_groups = true
+dotnet_sort_system_directives_first = true
+
+dotnet_style_qualification_for_event = false
+dotnet_style_qualification_for_field = false
+dotnet_style_qualification_for_method = false
+dotnet_style_qualification_for_property = false
+
+dotnet_style_predefined_type_for_locals_parameters_members = true
+dotnet_style_predefined_type_for_member_access = true
+
+dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary
+dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
+
+csharp_style_var_when_type_is_apparent = true
+csharp_style_var_for_built_in_types = true
+csharp_style_var_elsewhere = true
+
+csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
+
+# IDE0022: Use block body for methods
+csharp_style_expression_bodied_methods = when_on_single_line
+
+# IDE0058: Expression value is never used
+csharp_style_unused_value_expression_statement_preference = discard_variable
+
+# SA1101: Prefix local calls with this
+dotnet_diagnostic.SA1101.severity = none
+
+# SA1118: Parameter must not span multiple lines - broken for csharp_style_implicit_object_creation_when_type_is_apparent
+dotnet_diagnostic.SA1118.severity = none
+
+# SA1309: Field names should not begin with underscore
+dotnet_diagnostic.SA1309.severity = none
+
+# SA1512: Single-line comments should not be followed by blank line
+dotnet_diagnostic.SA1512.severity = none
+
+# SA1600: Elements should be documented
+dotnet_diagnostic.SA1600.severity = none
+
+dotnet_naming_rule.private_members_with_underscore.symbols = private_fields
+dotnet_naming_rule.private_members_with_underscore.style = prefix_underscore
+dotnet_naming_rule.private_members_with_underscore.severity = suggestion
+
+dotnet_naming_symbols.private_fields.applicable_kinds = field
+dotnet_naming_symbols.private_fields.applicable_accessibilities = private
+
+dotnet_naming_style.prefix_underscore.capitalization = camel_case
+dotnet_naming_style.prefix_underscore.required_prefix = _
+
+# Microsoft .NET properties
+csharp_preferred_modifier_order = public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
+csharp_space_after_cast = false
+csharp_style_expression_bodied_accessors = true:suggestion
+csharp_style_expression_bodied_methods = true:none
+csharp_style_expression_bodied_properties = true:suggestion
+csharp_style_var_elsewhere = true:suggestion
+csharp_style_var_for_built_in_types = true:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+dotnet_diagnostic.sa1101.severity = none
+dotnet_diagnostic.sa1309.severity = none
+dotnet_diagnostic.sa1512.severity = none
+dotnet_diagnostic.sa1600.severity = none
+dotnet_naming_rule.private_constants_rule.import_to_resharper = as_predefined
+dotnet_naming_rule.private_constants_rule.severity = suggestion
+dotnet_naming_rule.private_constants_rule.style = lower_camel_case_style
+dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
+dotnet_naming_rule.private_members_with_underscore_rule.import_to_resharper = True
+dotnet_naming_rule.private_members_with_underscore_rule.resharper_description = private_members_with_underscore
+dotnet_naming_rule.private_members_with_underscore_rule.resharper_guid = bce47c4f-c5b3-4475-bcf9-ca01adfb3835
+dotnet_naming_rule.private_members_with_underscore_rule.severity = suggestion
+dotnet_naming_rule.private_members_with_underscore_rule.style = lower_camel_case_style
+dotnet_naming_rule.private_members_with_underscore_rule.symbols = private_members_with_underscore_symbols
+dotnet_naming_rule.private_static_readonly_rule.import_to_resharper = as_predefined
+dotnet_naming_rule.private_static_readonly_rule.severity = suggestion
+dotnet_naming_rule.private_static_readonly_rule.style = lower_camel_case_style
+dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols
+dotnet_naming_rule.unity_serialized_field_rule.import_to_resharper = True
+dotnet_naming_rule.unity_serialized_field_rule.resharper_description = Unity serialized field
+dotnet_naming_rule.unity_serialized_field_rule.resharper_guid = 5f0fdb63-c892-4d2c-9324-15c80b22a7ef
+dotnet_naming_rule.unity_serialized_field_rule.severity = suggestion
+dotnet_naming_rule.unity_serialized_field_rule.style = lower_camel_case_style_1
+dotnet_naming_rule.unity_serialized_field_rule.symbols = unity_serialized_field_symbols
+dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
+dotnet_naming_style.lower_camel_case_style.required_prefix = _
+dotnet_naming_style.lower_camel_case_style_1.capitalization = camel_case
+dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private
+dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_constants_symbols.required_modifiers = const
+dotnet_naming_symbols.private_members_with_underscore_symbols.applicable_accessibilities = local,private
+dotnet_naming_symbols.private_members_with_underscore_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_members_with_underscore_symbols.resharper_applicable_kinds = field,readonly_field,constant_field
+dotnet_naming_symbols.private_members_with_underscore_symbols.resharper_required_modifiers = any
+dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
+dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static,readonly
+dotnet_naming_symbols.unity_serialized_field_symbols.applicable_accessibilities = *
+dotnet_naming_symbols.unity_serialized_field_symbols.applicable_kinds = unity_serialised_field
+dotnet_naming_symbols.unity_serialized_field_symbols.resharper_applicable_kinds = unity_serialised_field
+dotnet_naming_symbols.unity_serialized_field_symbols.resharper_required_modifiers = instance
+dotnet_separate_import_directive_groups = true
+dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:none
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
+dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:none
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
+
+# ReSharper properties
+resharper_align_multiline_binary_expressions_chain = false
+resharper_blank_lines_around_single_line_auto_property = 1
+resharper_csharp_blank_lines_around_single_line_invocable = 1
+resharper_csharp_max_line_length = 120
+resharper_csharp_wrap_after_declaration_lpar = true
+resharper_csharp_wrap_extends_list_style = chop_if_long
+resharper_csharp_wrap_parameters_style = chop_if_long
+resharper_enforce_line_ending_style = true
+resharper_indent_pars = outside
+resharper_keep_existing_initializer_arrangement = true
+resharper_object_creation_when_type_not_evident = target_typed
+resharper_place_accessorholder_attribute_on_same_line = false
+resharper_place_expr_accessor_on_single_line = true
+resharper_place_expr_method_on_single_line = true
+resharper_place_expr_property_on_single_line = true
+resharper_place_simple_initializer_on_single_line = true
+resharper_space_after_cast = false
+resharper_space_within_single_line_array_initializer_braces = true
+resharper_use_indent_from_vs = false
+resharper_wrap_chained_binary_expressions = chop_if_long
+resharper_wrap_object_and_collection_initializer_style = chop_always
+
+# ReSharper inspection severities
+resharper_arrange_object_creation_when_type_not_evident_highlighting = warning
+resharper_arrange_redundant_parentheses_highlighting = hint
+resharper_arrange_this_qualifier_highlighting = hint
+resharper_arrange_type_member_modifiers_highlighting = hint
+resharper_arrange_type_modifiers_highlighting = hint
+resharper_built_in_type_reference_style_for_member_access_highlighting = hint
+resharper_built_in_type_reference_style_highlighting = hint
+resharper_inconsistent_naming_highlighting = suggestion
+resharper_redundant_base_qualifier_highlighting = warning
+resharper_suggest_var_or_type_built_in_types_highlighting = hint
+resharper_suggest_var_or_type_elsewhere_highlighting = hint
+resharper_suggest_var_or_type_simple_types_highlighting = hint
+resharper_web_config_module_not_resolved_highlighting = warning
+resharper_web_config_type_not_resolved_highlighting = warning
+resharper_web_config_wrong_module_highlighting = warning
+
+[*.yml]
+indent_style = space
+tab_width = 2
diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..2a9b505
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,31 @@
+
+
+ enable
+ true
+
+ true
+ AGPL-3.0-or-later
+ https://github.com/VMelnalksnis/Gnomeshade
+ git
+
+ Valters Melnalksnis
+ Gnomeshade
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+ all
+
+
+
+
+
+
+ stylecop.json
+
+
+
diff --git a/NordigenDotNet.sln b/NordigenDotNet.sln
index efc733e..c45882a 100644
--- a/NordigenDotNet.sln
+++ b/NordigenDotNet.sln
@@ -5,11 +5,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.gitignore = .gitignore
LICENSE = LICENSE
README.md = README.md
+ Directory.Build.props = Directory.Build.props
+ stylecop.json = stylecop.json
+ .editorconfig = .editorconfig
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VMelnalksnis.NordigenDotNet", "source\VMelnalksnis.NordigenDotNet\VMelnalksnis.NordigenDotNet.csproj", "{C70F5B40-0A36-45CB-921B-09EA1F9A63AD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{F9FD8772-AC85-42BE-B3B0-F03247F72E2A}"
+ ProjectSection(SolutionItems) = preProject
+ tests\Directory.Build.props = tests\Directory.Build.props
+ tests\.editorconfig = tests\.editorconfig
+ EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VMelnalksnis.NordigenDotNet.Tests", "tests\VMelnalksnis.NordigenDotNet.Tests\VMelnalksnis.NordigenDotNet.Tests.csproj", "{6D01A25A-127B-4004-9C87-D0AA326E1DC2}"
EndProject
diff --git a/source/VMelnalksnis.NordigenDotNet/VMelnalksnis.NordigenDotNet.csproj b/source/VMelnalksnis.NordigenDotNet/VMelnalksnis.NordigenDotNet.csproj
index 58ef59a..f2f3353 100644
--- a/source/VMelnalksnis.NordigenDotNet/VMelnalksnis.NordigenDotNet.csproj
+++ b/source/VMelnalksnis.NordigenDotNet/VMelnalksnis.NordigenDotNet.csproj
@@ -1,8 +1,7 @@
-
- net6.0
- enable
-
+
+ net6.0
+
diff --git a/stylecop.json b/stylecop.json
new file mode 100644
index 0000000..188c0b5
--- /dev/null
+++ b/stylecop.json
@@ -0,0 +1,37 @@
+{
+ "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
+ "settings": {
+ "documentationRules": {
+ "companyName": "Valters Melnalksnis",
+ "copyrightText": "Copyright 2022 {companyName}\r\nLicensed under the {licenseName}.\r\nSee {licenseFile} file in the project root for full license information.",
+ "variables": {
+ "licenseName": "Apache License 2.0",
+ "licenseFile": "LICENSE"
+ },
+ "excludeFromPunctuationCheck": [],
+ "xmlHeader": false,
+ "documentationCulture": "en-US",
+ "documentExposedElements": true,
+ "documentInterfaces": true,
+ "documentInternalElements": true,
+ "documentPrivateElements": false,
+ "documentPrivateFields": false,
+ "fileNamingConvention": "stylecop",
+ "headerDecoration": ""
+ },
+ "indentation": {
+ "indentationSize": 4,
+ "tabSize": 4,
+ "useTabs": true
+ },
+ "layoutRules": {
+ "allowConsecutiveUsings": true,
+ "newlineAtEndOfFile": "require"
+ },
+ "orderingRules": {
+ "systemUsingDirectivesFirst": true,
+ "usingDirectivesPlacement": "outsideNamespace",
+ "blankLinesBetweenUsingGroups": "require"
+ }
+ }
+}
diff --git a/tests/.editorconfig b/tests/.editorconfig
new file mode 100644
index 0000000..630bc9b
--- /dev/null
+++ b/tests/.editorconfig
@@ -0,0 +1,4 @@
+[*.cs]
+
+# CS1591: Missing XML comment for publicly visible type or member
+dotnet_diagnostic.CS1591.severity = none
diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props
new file mode 100644
index 0000000..31d5aea
--- /dev/null
+++ b/tests/Directory.Build.props
@@ -0,0 +1,28 @@
+
+
+
+
+ false
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/VMelnalksnis.NordigenDotNet.Tests/PlaceholderTests.cs b/tests/VMelnalksnis.NordigenDotNet.Tests/PlaceholderTests.cs
index bb7d630..9df6480 100644
--- a/tests/VMelnalksnis.NordigenDotNet.Tests/PlaceholderTests.cs
+++ b/tests/VMelnalksnis.NordigenDotNet.Tests/PlaceholderTests.cs
@@ -1,4 +1,6 @@
-using Xunit;
+// Copyright 2022 Valters Melnalksnis
+// Licensed under the Apache License 2.0.
+// See LICENSE file in the project root for full license information.
namespace VMelnalksnis.NordigenDotNet.Tests;
@@ -7,5 +9,6 @@ public sealed class PlaceholderTests
[Fact]
public void Pass()
{
+ Assert.True(true);
}
}
diff --git a/tests/VMelnalksnis.NordigenDotNet.Tests/VMelnalksnis.NordigenDotNet.Tests.csproj b/tests/VMelnalksnis.NordigenDotNet.Tests/VMelnalksnis.NordigenDotNet.Tests.csproj
index 666d713..9d1c4dc 100644
--- a/tests/VMelnalksnis.NordigenDotNet.Tests/VMelnalksnis.NordigenDotNet.Tests.csproj
+++ b/tests/VMelnalksnis.NordigenDotNet.Tests/VMelnalksnis.NordigenDotNet.Tests.csproj
@@ -1,27 +1,11 @@
-
- net6.0
- enable
+
+ net6.0
+
- false
-
-
-
-
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
+
+
+