diff --git a/.editorconfig b/.editorconfig index 49e65e1..8225c31 100644 --- a/.editorconfig +++ b/.editorconfig @@ -34,3 +34,15 @@ insert_final_newline = true # Use tabs for indentation (Makefiles require tabs) indent_style = tab indent_size = 2 + +############################### +# .NET C# Coding Conventions # +############################### + +[*.cs] +#IDE1006 +dotnet_naming_style.camel_case.capitalization = camel_case +dotnet_naming_symbols.private_symbols.applicable_accessibilities = private +dotnet_naming_rule.camel_case_for_private.severity = warning +dotnet_naming_rule.camel_case_for_private.symbols = private_symbols +dotnet_naming_rule.camel_case_for_private.style = camel_case diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 2329d08..df17512 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -31,5 +31,7 @@ jobs: run: dotnet restore - name: Build run: dotnet build --no-restore + - name: Lint (codestyle) + run: dotnet format --verify-no-changes --verbosity normal - name: Test run: dotnet test --no-build --verbosity normal diff --git a/.github/workflows/markdown-lint.yml b/.github/workflows/markdown-lint.yml index c018ea6..342dd72 100644 --- a/.github/workflows/markdown-lint.yml +++ b/.github/workflows/markdown-lint.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node-version: [20.x] + node-version: [22.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: diff --git a/.vscode/settings.json b/.vscode/settings.json index 870dafe..6120401 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,7 @@ "sonarlint.connectedMode.project": { "connectionId": "sir-gon", "projectKey": "sir-gon_algorithm-exercises-csharp" - } + }, + "editor.defaultFormatter": "ms-dotnettools.csdevkit", + "editor.formatOnSave": true } diff --git a/Makefile b/Makefile index 86b8836..6ba704e 100644 --- a/Makefile +++ b/Makefile @@ -74,6 +74,10 @@ lint: test/static test/styling mdlint test/static: dependencies test/styling: dependencies + ${PACKAGE_TOOL} format --verify-no-changes --verbosity ${VERBOSITY_LEVEL} + +format: + ${PACKAGE_TOOL} format --verbosity ${VERBOSITY_LEVEL} build: env dependencies ${PACKAGE_TOOL} build --verbosity ${VERBOSITY_LEVEL} diff --git a/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler001.Test.cs b/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler001.Test.cs index ab99670..8c8d77e 100644 --- a/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler001.Test.cs +++ b/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler001.Test.cs @@ -3,15 +3,16 @@ namespace algorithm_exercises_csharp.hackerrank.prohecteuler; [TestClass] public class Euler001Test { - public class Euler001TestCase { + public class Euler001TestCase + { public int a; public int b; public int n; public int answer; } // dotnet_style_readonly_field = true private static readonly Euler001TestCase[] tests = [ - new() { a = 3, b = 5, n = 10, answer = 23}, - new() { a = 3, b = 5, n = 100, answer = 2318}, - new() { a = 3, b = 5, n = 1000, answer = 233168}, + new() { a = 3, b = 5, n = 10, answer = 23 }, + new() { a = 3, b = 5, n = 100, answer = 2318 }, + new() { a = 3, b = 5, n = 1000, answer = 233168 }, ]; @@ -20,9 +21,10 @@ public void Euler001ProblemTest() { int result; - foreach (Euler001TestCase test in tests) { + foreach (Euler001TestCase test in tests) + { result = Euler001Problem.Euler001(test.a, test.b, test.n); - Assert.AreEqual(test.answer, result); + Assert.AreEqual(test.answer, result); } } } diff --git a/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler002.Test.cs b/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler002.Test.cs index 572cd81..7e2f0dd 100644 --- a/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler002.Test.cs +++ b/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler002.Test.cs @@ -3,14 +3,15 @@ namespace algorithm_exercises_csharp.hackerrank.prohecteuler; [TestClass] public class Euler002Test { - public class Euler002TestCase { + public class Euler002TestCase + { public int n; public int answer; } // dotnet_style_readonly_field = true private static readonly Euler002TestCase[] tests = [ - new() { n = 10, answer = 10}, - new() { n = 100, answer = 44} + new() { n = 10, answer = 10 }, + new() { n = 100, answer = 44 } ]; [TestMethod] @@ -18,9 +19,10 @@ public void Euler002ProblemTest() { int result; - foreach (Euler002TestCase test in tests) { + foreach (Euler002TestCase test in tests) + { result = Euler002Problem.Euler002(test.n); - Assert.AreEqual(test.answer, result); + Assert.AreEqual(test.answer, result); } } } diff --git a/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler003.Test.cs b/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler003.Test.cs index ce5a5f2..371ed2e 100644 --- a/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler003.Test.cs +++ b/algorithm-exercises-csharp-test/src/hackerrank/projecteuler/Euler003.Test.cs @@ -8,15 +8,16 @@ namespace algorithm_exercises_csharp.hackerrank.prohecteuler; [TestClass] public class Euler003Test { - public class Euler003TestCase { + public class Euler003TestCase + { public int n; public int? answer; } // dotnet_style_readonly_field = true private static readonly Euler003TestCase[] tests = [ - new() { n = 1, answer = null}, - new() { n = 10, answer = 5}, - new() { n = 17, answer = 17} + new() { n = 1, answer = null }, + new() { n = 10, answer = 5 }, + new() { n = 17, answer = 17 } ]; [TestMethod] @@ -24,7 +25,8 @@ public void Euler003ProblemTest() { int? result; - foreach (Euler003TestCase test in tests) { + foreach (Euler003TestCase test in tests) + { result = Euler003Problem.Euler003(test.n); Assert.AreEqual(test.answer, result); } diff --git a/algorithm-exercises-csharp/src/Hello.cs b/algorithm-exercises-csharp/src/Hello.cs index 71fd8ca..bd49008 100644 --- a/algorithm-exercises-csharp/src/Hello.cs +++ b/algorithm-exercises-csharp/src/Hello.cs @@ -7,14 +7,15 @@ public class HelloWorld const string message = "Hello World!"; [ExcludeFromCodeCoverage] - protected HelloWorld() {} + protected HelloWorld() { } public static string Hello() { return HelloWorld.message; } - public static HelloWorld Create() { + public static HelloWorld Create() + { return new HelloWorld(); } } diff --git a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler001.cs b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler001.cs index e22f194..58c5266 100644 --- a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler001.cs +++ b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler001.cs @@ -7,9 +7,10 @@ namespace algorithm_exercises_csharp.hackerrank.prohecteuler; public class Euler001Problem { [ExcludeFromCodeCoverage] - protected Euler001Problem() {} + protected Euler001Problem() { } - public static int SuOfArithmeticProgression(int n, int d) { + public static int SuOfArithmeticProgression(int n, int d) + { int new_n = n / d; return new_n * (1 + new_n) * d / 2; @@ -19,7 +20,7 @@ public static int GCD(int u, int v) { if (v != 0) { - return GCD(v, u % v); + return GCD(v, u % v); } return u; } diff --git a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs index fa5a966..b70b7a4 100644 --- a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs +++ b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler002.cs @@ -7,22 +7,25 @@ namespace algorithm_exercises_csharp.hackerrank.prohecteuler; public class Euler002Problem { [ExcludeFromCodeCoverage] - protected Euler002Problem() {} + protected Euler002Problem() { } - public static int FiboEvenSum(int n) { + public static int FiboEvenSum(int n) + { int total = 0; int fibo; int fibo1 = 1; int fibo2 = 1; - while (fibo1 + fibo2 < n) { - fibo = fibo1 + fibo2; - fibo1 = fibo2; - fibo2 = fibo; + while (fibo1 + fibo2 < n) + { + fibo = fibo1 + fibo2; + fibo1 = fibo2; + fibo2 = fibo; - if(fibo % 2 == 0) { - total += fibo; - } + if (fibo % 2 == 0) + { + total += fibo; + } } return total; diff --git a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler003.cs b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler003.cs index 884a2e2..a46a74a 100644 --- a/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler003.cs +++ b/algorithm-exercises-csharp/src/hackerrank/projecteuler/Euler003.cs @@ -7,10 +7,12 @@ namespace algorithm_exercises_csharp.hackerrank.prohecteuler; public class Euler003Problem { [ExcludeFromCodeCoverage] - protected Euler003Problem() {} + protected Euler003Problem() { } - public static int? PrimeFactor(int n) { - if (n < 2) { + public static int? PrimeFactor(int n) + { + if (n < 2) + { return null; } @@ -18,16 +20,21 @@ protected Euler003Problem() {} int? max_prime_factor = null; int i = 2; - while (i <= Math.Sqrt(divisor)) { - if (0 == divisor % i) { - divisor = divisor / i; - max_prime_factor = divisor; - } else { - i += 1; - } + while (i <= Math.Sqrt(divisor)) + { + if (0 == divisor % i) + { + divisor = divisor / i; + max_prime_factor = divisor; + } + else + { + i += 1; + } } - if (max_prime_factor is null) { + if (max_prime_factor is null) + { return n; }