From 5f5cfc1cf57427648a97926a531e62dfb8fd3a3a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 29 Nov 2023 01:14:27 +0000
Subject: [PATCH 01/22] Update SauceControl.InheritDoc requirement from 1.3.*
to 1.4.* (#1409)
---
package-versions.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package-versions.props b/package-versions.props
index 06cd8b9e3a..37c2377bf4 100644
--- a/package-versions.props
+++ b/package-versions.props
@@ -13,7 +13,7 @@
2.1.*
6.12.*
2.3.*
- 1.3.*
+ 1.4.*
8.0.*
17.8.*
2.5.*
From c4736527a851148e3ee3539eb2c24e572cf2b925 Mon Sep 17 00:00:00 2001
From: Bart Koelman <10324372+bkoelman@users.noreply.github.com>
Date: Thu, 30 Nov 2023 02:52:24 +0100
Subject: [PATCH 02/22] Update Resharper to RC1 (#1412)
* Update Resharper to RC1
* Revert workaround
---
.config/dotnet-tools.json | 2 +-
.../Configuration/DependencyContainerRegistrationTests.cs | 3 ---
.../FieldChains/FieldChainPatternInheritanceMatchTests.cs | 3 ---
.../UnitTests/FieldChains/FieldChainPatternMatchTests.cs | 3 ---
.../UnitTests/Middleware/JsonApiMiddlewareTests.cs | 3 ---
.../ModelStateValidation/ModelStateValidationTests.cs | 3 ---
.../ResourceDefinitions/CreateSortExpressionFromLambdaTests.cs | 3 ---
.../UnitTests/ResourceGraph/ResourceGraphBuilderTests.cs | 3 ---
.../Serialization/Response/IncompleteResourceGraphTests.cs | 3 ---
test/NoEntityFrameworkTests/NullSafeExpressionRewriterTests.cs | 3 ---
10 files changed, 1 insertion(+), 28 deletions(-)
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 7f98da7f1a..34033af1b2 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"jetbrains.resharper.globaltools": {
- "version": "2023.3.0-eap08",
+ "version": "2023.3.0-rc01",
"commands": [
"jb"
]
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs
index 9e96bc718a..0289585dfb 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs
@@ -15,9 +15,6 @@
using TestBuildingBlocks;
using Xunit;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
namespace JsonApiDotNetCoreTests.UnitTests.Configuration;
public sealed class DependencyContainerRegistrationTests
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternInheritanceMatchTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternInheritanceMatchTests.cs
index f308b40d2d..067f8167d8 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternInheritanceMatchTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternInheritanceMatchTests.cs
@@ -10,9 +10,6 @@
using Xunit;
using Xunit.Abstractions;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
// ReSharper disable InconsistentNaming
#pragma warning disable AV1706 // Identifier contains an abbreviation or is too short
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternMatchTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternMatchTests.cs
index dec0e7c33d..613dd4fd41 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternMatchTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/FieldChains/FieldChainPatternMatchTests.cs
@@ -10,9 +10,6 @@
using Xunit;
using Xunit.Abstractions;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
// ReSharper disable InconsistentNaming
#pragma warning disable AV1706 // Identifier contains an abbreviation or is too short
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Middleware/JsonApiMiddlewareTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/Middleware/JsonApiMiddlewareTests.cs
index 4293a894df..d11eb53a19 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/Middleware/JsonApiMiddlewareTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/Middleware/JsonApiMiddlewareTests.cs
@@ -13,9 +13,6 @@
using TestBuildingBlocks;
using Xunit;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
#pragma warning disable AV1561 // Signature contains too many parameters
namespace JsonApiDotNetCoreTests.UnitTests.Middleware;
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/ModelStateValidation/ModelStateValidationTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/ModelStateValidation/ModelStateValidationTests.cs
index a1daade80a..34bbc16d17 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/ModelStateValidation/ModelStateValidationTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/ModelStateValidation/ModelStateValidationTests.cs
@@ -10,9 +10,6 @@
using TestBuildingBlocks;
using Xunit;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
namespace JsonApiDotNetCoreTests.UnitTests.ModelStateValidation;
public sealed class ModelStateValidationTests
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/ResourceDefinitions/CreateSortExpressionFromLambdaTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/ResourceDefinitions/CreateSortExpressionFromLambdaTests.cs
index bedb5398f8..337940b75c 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/ResourceDefinitions/CreateSortExpressionFromLambdaTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/ResourceDefinitions/CreateSortExpressionFromLambdaTests.cs
@@ -11,9 +11,6 @@
using TestBuildingBlocks;
using Xunit;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
namespace JsonApiDotNetCoreTests.UnitTests.ResourceDefinitions;
public sealed class CreateSortExpressionFromLambdaTests
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/ResourceGraph/ResourceGraphBuilderTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/ResourceGraph/ResourceGraphBuilderTests.cs
index 0f270ddfeb..ebce906b9d 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/ResourceGraph/ResourceGraphBuilderTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/ResourceGraph/ResourceGraphBuilderTests.cs
@@ -10,9 +10,6 @@
using TestBuildingBlocks;
using Xunit;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
namespace JsonApiDotNetCoreTests.UnitTests.ResourceGraph;
public sealed class ResourceGraphBuilderTests
diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/IncompleteResourceGraphTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/IncompleteResourceGraphTests.cs
index 5d6551e2ad..85329874ea 100644
--- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/IncompleteResourceGraphTests.cs
+++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/IncompleteResourceGraphTests.cs
@@ -10,9 +10,6 @@
using Microsoft.Extensions.Logging.Abstractions;
using Xunit;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
namespace JsonApiDotNetCoreTests.UnitTests.Serialization.Response;
public sealed class IncompleteResourceGraphTests
diff --git a/test/NoEntityFrameworkTests/NullSafeExpressionRewriterTests.cs b/test/NoEntityFrameworkTests/NullSafeExpressionRewriterTests.cs
index 27a52c0732..e8fe1585ca 100644
--- a/test/NoEntityFrameworkTests/NullSafeExpressionRewriterTests.cs
+++ b/test/NoEntityFrameworkTests/NullSafeExpressionRewriterTests.cs
@@ -6,9 +6,6 @@
using NoEntityFrameworkExample;
using Xunit;
-// Workaround for Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494909/Breaking-UsedImplicitly-and-PublicAPI-on-types-no-longer-respected.
-// ReSharper disable PropertyCanBeMadeInitOnly.Local
-
namespace NoEntityFrameworkTests;
public sealed class NullSafeExpressionRewriterTests
From 558d8b4a43ae6512d31afb4d30905bb267e38407 Mon Sep 17 00:00:00 2001
From: Bart Koelman <10324372+bkoelman@users.noreply.github.com>
Date: Sat, 2 Dec 2023 01:17:58 +0100
Subject: [PATCH 03/22] Resharper tweaks (#1413)
* Add directive to correct formatting style
* Promote Global:PropertyCanBeMadeInitOnly to warning, so it aligns with what Resharper shows in VS, and address new violations
---
WarningSeverities.DotSettings | 1 +
.../Serialization/Objects/Document.cs | 2 ++
.../IntegrationTests/FrozenClock.cs | 2 ++
test/UnitTests/Internal/ErrorObjectTests.cs | 29 +++++--------------
4 files changed, 13 insertions(+), 21 deletions(-)
diff --git a/WarningSeverities.DotSettings b/WarningSeverities.DotSettings
index 5c641e606f..f8ac8e1515 100644
--- a/WarningSeverities.DotSettings
+++ b/WarningSeverities.DotSettings
@@ -122,6 +122,7 @@
WARNING
WARNING
WARNING
+ WARNING
WARNING
WARNING
WARNING
diff --git a/src/JsonApiDotNetCore/Serialization/Objects/Document.cs b/src/JsonApiDotNetCore/Serialization/Objects/Document.cs
index e0d7d5def3..f21334f5c4 100644
--- a/src/JsonApiDotNetCore/Serialization/Objects/Document.cs
+++ b/src/JsonApiDotNetCore/Serialization/Objects/Document.cs
@@ -1,10 +1,12 @@
using System.Text.Json.Serialization;
+using JetBrains.Annotations;
namespace JsonApiDotNetCore.Serialization.Objects;
///
/// See https://jsonapi.org/format#document-top-level and https://jsonapi.org/ext/atomic/#document-structure.
///
+[PublicAPI]
public sealed class Document
{
[JsonPropertyName("jsonapi")]
diff --git a/test/DapperTests/IntegrationTests/FrozenClock.cs b/test/DapperTests/IntegrationTests/FrozenClock.cs
index 0de2390b71..c7ca4ea851 100644
--- a/test/DapperTests/IntegrationTests/FrozenClock.cs
+++ b/test/DapperTests/IntegrationTests/FrozenClock.cs
@@ -1,8 +1,10 @@
using DapperExample;
using FluentAssertions.Extensions;
+using JetBrains.Annotations;
namespace DapperTests.IntegrationTests;
+[UsedImplicitly(ImplicitUseTargetFlags.Members)]
internal sealed class FrozenClock : IClock
{
private static readonly DateTimeOffset DefaultTime = 1.January(2020).At(1, 1, 1).AsUtc();
diff --git a/test/UnitTests/Internal/ErrorObjectTests.cs b/test/UnitTests/Internal/ErrorObjectTests.cs
index bb8c4e3bcc..9d022b0caa 100644
--- a/test/UnitTests/Internal/ErrorObjectTests.cs
+++ b/test/UnitTests/Internal/ErrorObjectTests.cs
@@ -7,28 +7,15 @@ namespace UnitTests.Internal;
public sealed class ErrorObjectTests
{
- // Formatting below is broken due to Resharper bug at https://youtrack.jetbrains.com/issue/RSRP-494897/Formatter-directive-broken-in-2023.3-EAP7.
- // This no longer works: @formatter:wrap_array_initializer_style wrap_if_long
+ // @formatter:wrap_array_initializer_style wrap_if_long
+ // @formatter:max_array_initializer_elements_on_line 10
[Theory]
- [InlineData(new[]
- {
- HttpStatusCode.UnprocessableEntity
- }, HttpStatusCode.UnprocessableEntity)]
- [InlineData(new[]
- {
- HttpStatusCode.UnprocessableEntity,
- HttpStatusCode.UnprocessableEntity
- }, HttpStatusCode.UnprocessableEntity)]
- [InlineData(new[]
- {
- HttpStatusCode.UnprocessableEntity,
- HttpStatusCode.Unauthorized
- }, HttpStatusCode.BadRequest)]
- [InlineData(new[]
- {
- HttpStatusCode.UnprocessableEntity,
- HttpStatusCode.BadGateway
- }, HttpStatusCode.InternalServerError)]
+ [InlineData(new[] { HttpStatusCode.UnprocessableEntity }, HttpStatusCode.UnprocessableEntity)]
+ [InlineData(new[] { HttpStatusCode.UnprocessableEntity, HttpStatusCode.UnprocessableEntity }, HttpStatusCode.UnprocessableEntity)]
+ [InlineData(new[] { HttpStatusCode.UnprocessableEntity, HttpStatusCode.Unauthorized }, HttpStatusCode.BadRequest)]
+ [InlineData(new[] { HttpStatusCode.UnprocessableEntity, HttpStatusCode.BadGateway }, HttpStatusCode.InternalServerError)]
+ // @formatter:max_array_initializer_elements_on_line restore
+ // @formatter:wrap_array_initializer_style restore
public void ErrorDocument_GetErrorStatusCode_IsCorrect(HttpStatusCode[] errorCodes, HttpStatusCode expected)
{
// Arrange
From e60f60bb3d016cc957b89fc7c69a89fd7dba78df Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 7 Dec 2023 03:04:01 +0000
Subject: [PATCH 04/22] Bump jetbrains.resharper.globaltools from 2023.3.0-rc01
to 2023.3.0 (#1416)
---
.config/dotnet-tools.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 34033af1b2..90ac9675f8 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"jetbrains.resharper.globaltools": {
- "version": "2023.3.0-rc01",
+ "version": "2023.3.0",
"commands": [
"jb"
]
From 337a2a9635d975c09aa9b6ae66550392a8e56c73 Mon Sep 17 00:00:00 2001
From: Bart Koelman <10324372+bkoelman@users.noreply.github.com>
Date: Sun, 10 Dec 2023 19:29:50 +0100
Subject: [PATCH 05/22] Try workaround for flaky network in GitHub hosted
runners (#1403)
https://github.com/actions/runner-images/issues/1187
---
.github/workflows/build.yml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3db9a71101..083411ba25 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -39,6 +39,8 @@ jobs:
permissions:
contents: read
steps:
+ - name: Tune GitHub-hosted runner network
+ uses: smorimoto/tune-github-hosted-runner-network@v1
- name: Setup PostgreSQL
uses: ikalnytskyi/action-setup-postgres@v4
with:
@@ -181,6 +183,8 @@ jobs:
permissions:
contents: read
steps:
+ - name: Tune GitHub-hosted runner network
+ uses: smorimoto/tune-github-hosted-runner-network@v1
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
@@ -234,6 +238,8 @@ jobs:
permissions:
contents: read
steps:
+ - name: Tune GitHub-hosted runner network
+ uses: smorimoto/tune-github-hosted-runner-network@v1
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
@@ -277,6 +283,8 @@ jobs:
packages: write
contents: write
steps:
+ - name: Tune GitHub-hosted runner network
+ uses: smorimoto/tune-github-hosted-runner-network@v1
- name: Download artifacts
uses: actions/download-artifact@v3
- name: Publish to GitHub Packages
From a7fcefb955110963a47a3b31796fed7084ad145c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 11 Dec 2023 09:06:46 +0000
Subject: [PATCH 06/22] Bump actions/setup-dotnet from 3 to 4 (#1419)
---
.github/workflows/build.yml | 6 +++---
.github/workflows/codeql.yml | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 083411ba25..d553ef71da 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -47,7 +47,7 @@ jobs:
username: postgres
password: postgres
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
@@ -186,7 +186,7 @@ jobs:
- name: Tune GitHub-hosted runner network
uses: smorimoto/tune-github-hosted-runner-network@v1
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
@@ -241,7 +241,7 @@ jobs:
- name: Tune GitHub-hosted runner network
uses: smorimoto/tune-github-hosted-runner-network@v1
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 5b1868eae5..9a58eeb4a7 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -24,7 +24,7 @@ jobs:
language: [ 'csharp' ]
steps:
- name: Setup .NET
- uses: actions/setup-dotnet@v3
+ uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
From e4303301f307e6be36ff3929f87718e1e4a200a3 Mon Sep 17 00:00:00 2001
From: Bart Koelman <10324372+bkoelman@users.noreply.github.com>
Date: Thu, 14 Dec 2023 12:07:22 +0100
Subject: [PATCH 07/22] Speed up InspectCode/CleanupCode by turning off roslyn
analyzers (#1420)
See recommendation at https://youtrack.jetbrains.com/issue/RSRP-493882/inspectcode.exe-performance-degradation
---
.config/dotnet-tools.json | 2 +-
.github/workflows/build.yml | 6 +++---
JsonApiDotNetCore.sln | 3 ++-
cleanupcode.ps1 | 6 +++---
inspectcode.ps1 | 2 +-
5 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 90ac9675f8..32e76a6e81 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"jetbrains.resharper.globaltools": {
- "version": "2023.3.0",
+ "version": "2023.3.1",
"commands": [
"jb"
]
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index d553ef71da..7efd2cef0e 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -201,7 +201,7 @@ jobs:
run: |
$inspectCodeOutputPath = Join-Path $env:RUNNER_TEMP 'jetbrains-inspectcode-results.xml'
Write-Output "INSPECT_CODE_OUTPUT_PATH=$inspectCodeOutputPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- dotnet jb inspectcode JsonApiDotNetCore.sln --build --dotnetcoresdk=$(dotnet --version) --output="$inspectCodeOutputPath" --profile=WarningSeverities.DotSettings --properties:Configuration=Release --properties:ContinuousIntegrationBuild=false --severity=WARNING --verbosity=WARN -dsl=GlobalAll -dsl=GlobalPerProduct -dsl=SolutionPersonal -dsl=ProjectPersonal
+ dotnet jb inspectcode JsonApiDotNetCore.sln --build --dotnetcoresdk=$(dotnet --version) --output="$inspectCodeOutputPath" --profile=WarningSeverities.DotSettings --properties:Configuration=Release --properties:ContinuousIntegrationBuild=false --properties:RunAnalyzers=false --severity=WARNING --verbosity=WARN -dsl=GlobalAll -dsl=GlobalPerProduct -dsl=SolutionPersonal -dsl=ProjectPersonal
- name: Verify outcome
shell: pwsh
run: |
@@ -266,13 +266,13 @@ jobs:
$baseCommitHash = git rev-parse HEAD~1
Write-Output "Running code cleanup on commit range $baseCommitHash..$headCommitHash in pull request."
- dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff
+ dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --verbosity=WARN -f commits -a $headCommitHash -b $baseCommitHash --fail-on-diff --print-diff
- name: CleanupCode (on branch)
if: github.event_name == 'push' || github.event_name == 'release'
shell: pwsh
run: |
Write-Output "Running code cleanup on all files."
- dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN --fail-on-diff --print-diff
+ dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --verbosity=WARN --fail-on-diff --print-diff
publish:
timeout-minutes: 60
diff --git a/JsonApiDotNetCore.sln b/JsonApiDotNetCore.sln
index e821d4175d..c555610364 100644
--- a/JsonApiDotNetCore.sln
+++ b/JsonApiDotNetCore.sln
@@ -10,11 +10,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.gitignore = .gitignore
+ .github\workflows\build.yml = .github\workflows\build.yml
CodingGuidelines.ruleset = CodingGuidelines.ruleset
CSharpGuidelinesAnalyzer.config = CSharpGuidelinesAnalyzer.config
Directory.Build.props = Directory.Build.props
- tests.runsettings = tests.runsettings
package-versions.props = package-versions.props
+ tests.runsettings = tests.runsettings
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{026FBC6C-AF76-4568-9B87-EC73457899FD}"
diff --git a/cleanupcode.ps1 b/cleanupcode.ps1
index 3ab4d620ae..237f854be3 100644
--- a/cleanupcode.ps1
+++ b/cleanupcode.ps1
@@ -28,17 +28,17 @@ if ($revision) {
if ($baseCommitHash -eq $headCommitHash) {
Write-Output "Running code cleanup on staged/unstaged files."
- dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN -f staged,modified
+ dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false-- jb --verbosity=WARN -f staged,modified
VerifySuccessExitCode
}
else {
Write-Output "Running code cleanup on commit range $baseCommitHash..$headCommitHash, including staged/unstaged files."
- dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN -f staged,modified,commits -a $headCommitHash -b $baseCommitHash
+ dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --max-runs=5 --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false-- jb --verbosity=WARN -f staged,modified,commits -a $headCommitHash -b $baseCommitHash
VerifySuccessExitCode
}
}
else {
Write-Output "Running code cleanup on all files."
- dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --verbosity=WARN
+ dotnet regitlint -s JsonApiDotNetCore.sln --print-command --skip-tool-check --jb --dotnetcoresdk=$(dotnet --version) --jb-profile="JADNC Full Cleanup" --jb --properties:Configuration=Release --jb --properties:RunAnalyzers=false --jb --verbosity=WARN
VerifySuccessExitCode
}
diff --git a/inspectcode.ps1 b/inspectcode.ps1
index 14c3eb1736..aa816da5e9 100644
--- a/inspectcode.ps1
+++ b/inspectcode.ps1
@@ -10,7 +10,7 @@ if ($LastExitCode -ne 0) {
$outputPath = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), 'jetbrains-inspectcode-results.xml')
$resultPath = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), 'jetbrains-inspectcode-results.html')
-dotnet jb inspectcode JsonApiDotNetCore.sln --dotnetcoresdk=$(dotnet --version) --build --output="$outputPath" --profile=WarningSeverities.DotSettings --properties:Configuration=Release --severity=WARNING --verbosity=WARN -dsl=GlobalAll -dsl=GlobalPerProduct -dsl=SolutionPersonal -dsl=ProjectPersonal
+dotnet jb inspectcode JsonApiDotNetCore.sln --dotnetcoresdk=$(dotnet --version) --build --output="$outputPath" --profile=WarningSeverities.DotSettings --properties:Configuration=Release --properties:RunAnalyzers=false --severity=WARNING --verbosity=WARN -dsl=GlobalAll -dsl=GlobalPerProduct -dsl=SolutionPersonal -dsl=ProjectPersonal
if ($LastExitCode -ne 0) {
throw "Code inspection failed with exit code $LastExitCode"
From f33c20df45f5b8db2c24f71b04c0063f5e74eb32 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 21 Dec 2023 02:09:35 +0000
Subject: [PATCH 08/22] Bump jetbrains.resharper.globaltools from 2023.3.1 to
2023.3.2
Bumps jetbrains.resharper.globaltools from 2023.3.1 to 2023.3.2.
---
updated-dependencies:
- dependency-name: jetbrains.resharper.globaltools
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
.config/dotnet-tools.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 32e76a6e81..575923d62c 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"jetbrains.resharper.globaltools": {
- "version": "2023.3.1",
+ "version": "2023.3.2",
"commands": [
"jb"
]
@@ -27,4 +27,4 @@
]
}
}
-}
+}
\ No newline at end of file
From 89a655f3ae10c56bb9ff53f0a4d956c89b342107 Mon Sep 17 00:00:00 2001
From: Bart Koelman <10324372+bkoelman@users.noreply.github.com>
Date: Thu, 21 Dec 2023 11:44:05 +0100
Subject: [PATCH 09/22] Resharper: Fix new warning about usage of collection
expressions
---
benchmarks/Program.cs | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/benchmarks/Program.cs b/benchmarks/Program.cs
index 818b9ab5e5..b1e3307931 100644
--- a/benchmarks/Program.cs
+++ b/benchmarks/Program.cs
@@ -9,14 +9,13 @@ internal static class Program
{
private static void Main(string[] args)
{
- var switcher = new BenchmarkSwitcher(new[]
- {
+ var switcher = new BenchmarkSwitcher([
typeof(ResourceDeserializationBenchmarks),
typeof(OperationsDeserializationBenchmarks),
typeof(ResourceSerializationBenchmarks),
typeof(OperationsSerializationBenchmarks),
typeof(QueryStringParserBenchmarks)
- });
+ ]);
switcher.Run(args);
}
From 1f71c6f2d824515fb0078672b66b0ee4d803552f Mon Sep 17 00:00:00 2001
From: Bart Koelman <10324372+bkoelman@users.noreply.github.com>
Date: Thu, 21 Dec 2023 12:26:00 +0100
Subject: [PATCH 10/22] Resharper: use primary constructors
---
JsonApiDotNetCore.sln.DotSettings | 2 +
WarningSeverities.DotSettings | 2 +
.../Controllers/OperationsController.cs | 11 ++----
.../DapperExample/Data/RotatingList.cs | 9 +----
.../Repositories/ResultSetMapper.cs | 9 +----
.../DeleteOneToOneStatementBuilder.cs | 7 +---
.../DeleteResourceStatementBuilder.cs | 7 +---
.../Builders/InsertStatementBuilder.cs | 7 +---
.../Builders/SqlQueryBuilder.cs | 18 ++-------
.../UpdateClearOneToOneStatementBuilder.cs | 7 +---
.../UpdateResourceStatementBuilder.cs | 7 +---
.../DataModel/FromEntitiesDataModelService.cs | 7 +---
.../Generators/ParameterGenerator.cs | 8 +---
.../Generators/TableAliasGenerator.cs | 8 +---
.../StaleColumnReferenceRewriter.cs | 9 +----
.../TreeNodes/ColumnInSelectNode.cs | 11 ++----
.../TreeNodes/ColumnInTableNode.cs | 7 +---
.../TreeNodes/CountSelectorNode.cs | 7 +---
.../TranslationToSql/TreeNodes/FromNode.cs | 7 +---
.../TreeNodes/OneSelectorNode.cs | 7 +---
.../TreeNodes/OrderByTermNode.cs | 9 +----
.../TreeNodes/SelectorNode.cs | 9 +----
.../TreeNodes/TableSourceNode.cs | 9 +----
.../Data/AppDbContext.cs | 14 ++-----
.../GettingStarted/Data/SampleDbContext.cs | 7 +---
.../Controllers/OperationsController.cs | 11 ++----
.../Data/AppDbContext.cs | 7 +---
.../Data/RotatingList.cs | 9 +----
.../Definitions/TodoItemDefinition.cs | 23 +++++------
.../MultiDbContextExample/Data/DbContextA.cs | 7 +---
.../MultiDbContextExample/Data/DbContextB.cs | 7 +---
.../Repositories/DbContextARepository.cs | 16 +++-----
.../Repositories/DbContextBRepository.cs | 16 +++-----
.../InMemoryInverseNavigationResolver.cs | 9 +----
.../QueryLayerToLinqConverter.cs | 12 ++----
.../Repositories/PersonRepository.cs | 8 +---
.../Repositories/TagRepository.cs | 8 +---
.../Repositories/TodoItemRepository.cs | 8 +---
.../Services/TodoItemService.cs | 12 +++---
.../ReportsExample/Services/ReportService.cs | 9 +----
.../SourceCodeWriter.cs | 12 ++----
.../AtomicOperations/LocalIdTracker.cs | 9 +----
.../Configuration/ResourceNameFormatter.cs | 9 +----
.../JsonApiOperationsController.cs | 10 ++---
...annotClearRequiredRelationshipException.cs | 15 +++----
.../Errors/DuplicateLocalIdValueException.cs | 14 ++-----
.../Errors/FailedOperationException.cs | 23 +++++------
.../IncompatibleLocalIdTypeException.cs | 15 +++----
.../Errors/InvalidConfigurationException.cs | 8 +---
.../Errors/InvalidModelStateException.cs | 25 +++++-------
.../Errors/InvalidQueryException.cs | 14 ++-----
.../InvalidQueryStringParameterException.cs | 27 ++++++-------
.../Errors/InvalidRequestBodyException.cs | 39 ++++++++-----------
.../Errors/LocalIdSingleOperationException.cs | 14 ++-----
.../MissingTransactionSupportException.cs | 14 ++-----
.../NonParticipatingTransactionException.cs | 14 ++-----
.../Errors/RelationshipNotFoundException.cs | 14 ++-----
.../Errors/ResourceAlreadyExistsException.cs | 14 ++-----
.../Errors/ResourceNotFoundException.cs | 14 ++-----
...sourcesInRelationshipsNotFoundException.cs | 8 +---
.../Errors/RouteNotAvailableException.cs | 18 +++------
.../Errors/UnknownLocalIdValueException.cs | 14 ++-----
.../Middleware/TraceLogWriter.cs | 9 +----
...nationElementQueryStringValueExpression.cs | 15 ++-----
.../Queries/IndentingStringWriter.cs | 9 +----
.../Queries/Parsing/FilterParser.cs | 9 +----
.../Queries/Parsing/Token.cs | 12 ++----
.../FieldChains/FieldChainFormatException.cs | 10 +----
.../FieldChains/PatternFormatException.cs | 13 ++-----
.../Repositories/DataStoreUpdateException.cs | 8 +---
.../Serialization/Objects/ErrorObject.cs | 9 +----
.../Adapters/AtomicReferenceAdapter.cs | 8 +---
.../Adapters/RequestAdapterPosition.cs | 9 +----
.../ResourceDataInOperationsRequestAdapter.cs | 8 +---
.../ResourceIdentifierObjectAdapter.cs | 8 +---
.../IntegrationTests/SqlTextAdapter.cs | 9 +----
.../PrivateResourceDefinition.cs | 8 +---
.../PrivateResourceRepository.cs | 14 +++----
test/DiscoveryTests/PrivateResourceService.cs | 14 +++----
.../TelevisionBroadcastDefinition.cs | 19 +++------
.../Archiving/TelevisionDbContext.cs | 7 +---
.../CreateMusicTrackOperationsController.cs | 10 ++---
...mplicitlyChangingTextLanguageDefinition.cs | 11 ++----
.../Meta/MusicTrackMetaDefinition.cs | 8 +---
.../Meta/TextLanguageMetaDefinition.cs | 8 +---
.../Mixed/AtomicLoggingTests.cs | 9 +----
.../AtomicOperations/OperationsController.cs | 11 ++----
.../AtomicOperations/OperationsDbContext.cs | 7 +---
.../Serialization/RecordCompanyDefinition.cs | 8 +---
.../SparseFieldSets/LyricTextDefinition.cs | 11 ++----
.../Transactions/ExtraDbContext.cs | 8 +---
.../Transactions/MusicTrackRepository.cs | 13 +++----
.../Scopes/OperationsController.cs | 10 ++---
.../Scopes/ScopesAuthorizationFilter.cs | 9 +----
.../Authorization/Scopes/ScopesDbContext.cs | 7 +---
.../IntegrationTests/Blobs/BlobDbContext.cs | 7 +---
.../CarCompositeKeyAwareRepository.cs | 16 +++-----
.../CompositeKeys/CompositeDbContext.cs | 7 +---
.../OperationsController.cs | 11 ++----
.../ContentNegotiation/PolicyDbContext.cs | 7 +---
.../ActionResultDbContext.cs | 7 +---
.../CustomRoutes/CustomRouteDbContext.cs | 7 +---
.../EagerLoading/BuildingRepository.cs | 13 +++----
.../EagerLoading/EagerLoadingDbContext.cs | 7 +---
.../AlternateExceptionHandler.cs | 7 +---
...umerArticleIsNoLongerAvailableException.cs | 19 ++++-----
.../ConsumerArticleService.cs | 13 +++----
.../ExceptionHandling/ErrorDbContext.cs | 7 +---
.../HostingInIIS/HostingDbContext.cs | 7 +---
.../IdObfuscation/BankAccountsController.cs | 11 ++----
.../IdObfuscation/DebitCardsController.cs | 11 ++----
.../ObfuscatedIdentifiableController.cs | 10 ++---
.../IdObfuscation/ObfuscationDbContext.cs | 7 +---
.../ModelState/ModelStateDbContext.cs | 7 +---
.../RequestBody/WorkflowDbContext.cs | 7 +---
.../RequestBody/WorkflowDefinition.cs | 7 +---
.../IntegrationTests/Links/LinksDbContext.cs | 7 +---
.../Logging/LoggingDbContext.cs | 7 +---
.../IntegrationTests/Meta/MetaDbContext.cs | 7 +---
.../Meta/SupportTicketDefinition.cs | 8 +---
.../FireForgetDbContext.cs | 7 +---
.../FireForgetGroupDefinition.cs | 13 ++-----
.../FireForgetUserDefinition.cs | 13 ++-----
.../Messages/GroupCreatedContent.cs | 12 ++----
.../Messages/GroupDeletedContent.cs | 9 +----
.../Messages/GroupRenamedContent.cs | 15 ++-----
.../Messages/UserAddedToGroupContent.cs | 12 ++----
.../Messages/UserCreatedContent.cs | 15 ++-----
.../Messages/UserDeletedContent.cs | 9 +----
.../Messages/UserDisplayNameChangedContent.cs | 15 ++-----
.../Messages/UserLoginNameChangedContent.cs | 15 ++-----
.../Messages/UserMovedToGroupContent.cs | 15 ++-----
.../Messages/UserRemovedFromGroupContent.cs | 12 ++----
.../Microservices/MessagingGroupDefinition.cs | 16 +++-----
.../Microservices/MessagingUserDefinition.cs | 11 ++----
.../OutboxDbContext.cs | 7 +---
.../OutboxGroupDefinition.cs | 11 ++----
.../OutboxUserDefinition.cs | 11 ++----
.../MultiTenancy/MultiTenancyDbContext.cs | 10 +----
.../MultiTenantResourceService.cs | 17 ++++----
.../MultiTenancy/RouteTenantProvider.cs | 9 +----
.../DivingBoardsController.cs | 11 ++----
.../NamingConventions/NamingDbContext.cs | 7 +---
.../SwimmingPoolsController.cs | 11 ++----
.../DuplicateKnownResourcesController.cs | 11 ++----
.../NonJsonApiControllers/EmptyDbContext.cs | 8 +---
.../NonJsonApiControllers/KnownDbContext.cs | 7 +---
.../IsUpperCase/IsUpperCaseFilterParser.cs | 7 +---
.../StringLength/LengthFilterParser.cs | 7 +---
.../CustomFunctions/Sum/SumFilterParser.cs | 7 +---
.../FilterRewritingResourceDefinition.cs | 11 ++----
.../TimeOffset/FilterTimeOffsetRewriter.cs | 9 +----
.../TimeOffset/TimeOffsetFilterParser.cs | 7 +---
.../QueryStrings/Filtering/FilterDbContext.cs | 7 +---
.../QueryStrings/QueryStringDbContext.cs | 7 +---
.../ResultCapturingRepository.cs | 16 +++-----
.../ImplicitlyChangingWorkItemDefinition.cs | 11 ++----
...plicitlyChangingWorkItemGroupDefinition.cs | 11 ++----
.../ReadWrite/ReadWriteDbContext.cs | 7 +---
.../RemoveFromToManyRelationshipTests.cs | 7 +---
.../DefaultBehaviorDbContext.cs | 7 +---
.../GiftCertificate.cs | 9 +----
.../PostOffice.cs | 9 +----
.../Reading/MoonDefinition.cs | 15 ++-----
.../Reading/PlanetDefinition.cs | 15 ++-----
.../Reading/StarDefinition.cs | 11 ++----
.../Reading/UniverseDbContext.cs | 7 +---
.../Serialization/SerializationDbContext.cs | 7 +---
.../Serialization/StudentDefinition.cs | 15 ++-----
.../ChangeTracking/ChangeTrackingDbContext.cs | 7 +---
.../ResourceInheritanceDbContext.cs | 7 +---
.../TablePerConcreteTypeDbContext.cs | 7 +---
.../TablePerConcreteTypeReadTests.cs | 10 ++---
.../TablePerConcreteTypeWriteTests.cs | 10 ++---
.../TablePerHierarchyDbContext.cs | 8 +---
.../TablePerHierarchyReadTests.cs | 9 +----
.../TablePerHierarchyWriteTests.cs | 9 +----
.../TablePerType/TablePerTypeDbContext.cs | 7 +---
.../TablePerType/TablePerTypeReadTests.cs | 9 +----
.../TablePerType/TablePerTypeWriteTests.cs | 9 +----
.../RestrictionDbContext.cs | 7 +---
.../Serialization/SerializationDbContext.cs | 7 +---
.../SoftDeletionAwareResourceService.cs | 26 +++++--------
.../SoftDeletion/SoftDeletionDbContext.cs | 7 +---
.../ZeroKeys/ZeroKeyDbContext.cs | 7 +---
.../DependencyContainerRegistrationTests.cs | 8 +---
.../ServiceCollectionExtensionsTests.cs | 7 +---
.../Middleware/JsonApiMiddlewareTests.cs | 12 ++----
.../QueryStringParameters/FilterParseTests.cs | 14 +------
.../CreateSortExpressionFromLambdaTests.cs | 7 +---
test/MultiDbContextTests/ResourceTests.cs | 9 +----
test/NoEntityFrameworkTests/PersonTests.cs | 9 +----
test/NoEntityFrameworkTests/TagTests.cs | 9 +----
test/NoEntityFrameworkTests/TodoItemTests.cs | 9 +----
.../GeneratorDriverRunResultExtensions.cs | 8 +---
test/TestBuildingBlocks/FakeLogMessage.cs | 12 ++----
test/TestBuildingBlocks/FakeLoggerFactory.cs | 18 ++-------
test/TestBuildingBlocks/TestableDbContext.cs | 7 +---
.../TestBuildingBlocks/XUnitLoggerProvider.cs | 15 ++-----
199 files changed, 528 insertions(+), 1543 deletions(-)
diff --git a/JsonApiDotNetCore.sln.DotSettings b/JsonApiDotNetCore.sln.DotSettings
index a945c3a40d..ce137df506 100644
--- a/JsonApiDotNetCore.sln.DotSettings
+++ b/JsonApiDotNetCore.sln.DotSettings
@@ -95,6 +95,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);
SUGGESTION
SUGGESTION
WARNING
+ True
SUGGESTION
<?xml version="1.0" encoding="utf-16"?><Profile name="JADNC Full Cleanup"><XMLReformatCode>True</XMLReformatCode><CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="True" ArrangeCodeBodyStyle="True" ArrangeVarStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" ArrangeNamespaces="True" ArrangeNullCheckingPattern="True" /><CssAlphabetizeProperties>True</CssAlphabetizeProperties><JsInsertSemicolon>True</JsInsertSemicolon><FormatAttributeQuoteDescriptor>True</FormatAttributeQuoteDescriptor><CorrectVariableKindsDescriptor>True</CorrectVariableKindsDescriptor><VariablesToInnerScopesDescriptor>True</VariablesToInnerScopesDescriptor><StringToTemplatesDescriptor>True</StringToTemplatesDescriptor><JsReformatCode>True</JsReformatCode><JsFormatDocComments>True</JsFormatDocComments><RemoveRedundantQualifiersTs>True</RemoveRedundantQualifiersTs><OptimizeImportsTs>True</OptimizeImportsTs><OptimizeReferenceCommentsTs>True</OptimizeReferenceCommentsTs><PublicModifierStyleTs>True</PublicModifierStyleTs><ExplicitAnyTs>True</ExplicitAnyTs><TypeAnnotationStyleTs>True</TypeAnnotationStyleTs><RelativePathStyleTs>True</RelativePathStyleTs><AsInsteadOfCastTs>True</AsInsteadOfCastTs><HtmlReformatCode>True</HtmlReformatCode><AspOptimizeRegisterDirectives>True</AspOptimizeRegisterDirectives><RemoveCodeRedundancies>True</RemoveCodeRedundancies><CSUseAutoProperty>True</CSUseAutoProperty><CSMakeFieldReadonly>True</CSMakeFieldReadonly><CSMakeAutoPropertyGetOnly>True</CSMakeAutoPropertyGetOnly><CSArrangeQualifiers>True</CSArrangeQualifiers><CSFixBuiltinTypeReferences>True</CSFixBuiltinTypeReferences><CssReformatCode>True</CssReformatCode><CSOptimizeUsings><OptimizeUsings>True</OptimizeUsings></CSOptimizeUsings><CSShortenReferences>True</CSShortenReferences><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><CSReorderTypeMembers>True</CSReorderTypeMembers><XAMLCollapseEmptyTags>False</XAMLCollapseEmptyTags><CSReformatInactiveBranches>True</CSReformatInactiveBranches></Profile>
JADNC Full Cleanup
@@ -154,6 +155,7 @@ JsonApiDotNetCore.ArgumentGuard.NotNull($EXPR$);
WRAP_IF_LONG
CHOP_ALWAYS
CHOP_ALWAYS
+ WRAP_IF_LONG
True
True
2
diff --git a/WarningSeverities.DotSettings b/WarningSeverities.DotSettings
index f8ac8e1515..a0fae5acd2 100644
--- a/WarningSeverities.DotSettings
+++ b/WarningSeverities.DotSettings
@@ -69,6 +69,7 @@
WARNING
WARNING
WARNING
+ WARNING
WARNING
WARNING
WARNING
@@ -197,6 +198,7 @@
WARNING
WARNING
WARNING
+ WARNING
WARNING
WARNING
WARNING
diff --git a/src/Examples/DapperExample/Controllers/OperationsController.cs b/src/Examples/DapperExample/Controllers/OperationsController.cs
index 979e6c9cd7..6fe0eedd1d 100644
--- a/src/Examples/DapperExample/Controllers/OperationsController.cs
+++ b/src/Examples/DapperExample/Controllers/OperationsController.cs
@@ -6,11 +6,6 @@
namespace DapperExample.Controllers;
-public sealed class OperationsController : JsonApiOperationsController
-{
- public OperationsController(IJsonApiOptions options, IResourceGraph resourceGraph, ILoggerFactory loggerFactory, IOperationsProcessor processor,
- IJsonApiRequest request, ITargetedFields targetedFields)
- : base(options, resourceGraph, loggerFactory, processor, request, targetedFields)
- {
- }
-}
+public sealed class OperationsController(
+ IJsonApiOptions options, IResourceGraph resourceGraph, ILoggerFactory loggerFactory, IOperationsProcessor processor, IJsonApiRequest request,
+ ITargetedFields targetedFields) : JsonApiOperationsController(options, resourceGraph, loggerFactory, processor, request, targetedFields);
diff --git a/src/Examples/DapperExample/Data/RotatingList.cs b/src/Examples/DapperExample/Data/RotatingList.cs
index 67c19bea4a..278c34140a 100644
--- a/src/Examples/DapperExample/Data/RotatingList.cs
+++ b/src/Examples/DapperExample/Data/RotatingList.cs
@@ -16,16 +16,11 @@ public static RotatingList Create(int count, Func createElement)
}
}
-internal sealed class RotatingList
+internal sealed class RotatingList(IList elements)
{
private int _index = -1;
- public IList Elements { get; }
-
- public RotatingList(IList elements)
- {
- Elements = elements;
- }
+ public IList Elements { get; } = elements;
public T GetNext()
{
diff --git a/src/Examples/DapperExample/Repositories/ResultSetMapper.cs b/src/Examples/DapperExample/Repositories/ResultSetMapper.cs
index 61421d7331..4352b6c552 100644
--- a/src/Examples/DapperExample/Repositories/ResultSetMapper.cs
+++ b/src/Examples/DapperExample/Repositories/ResultSetMapper.cs
@@ -166,14 +166,9 @@ public IReadOnlyCollection GetResources()
return _primaryResourcesInOrder.DistinctBy(resource => resource.Id).ToList();
}
- private sealed class IncludeElementWalker
+ private sealed class IncludeElementWalker(IncludeExpression include)
{
- private readonly IncludeExpression _include;
-
- public IncludeElementWalker(IncludeExpression include)
- {
- _include = include;
- }
+ private readonly IncludeExpression _include = include;
public IEnumerable BreadthFirstEnumerate()
{
diff --git a/src/Examples/DapperExample/TranslationToSql/Builders/DeleteOneToOneStatementBuilder.cs b/src/Examples/DapperExample/TranslationToSql/Builders/DeleteOneToOneStatementBuilder.cs
index 5a1293d41b..3ea368b299 100644
--- a/src/Examples/DapperExample/TranslationToSql/Builders/DeleteOneToOneStatementBuilder.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Builders/DeleteOneToOneStatementBuilder.cs
@@ -6,13 +6,8 @@
namespace DapperExample.TranslationToSql.Builders;
-internal sealed class DeleteOneToOneStatementBuilder : StatementBuilder
+internal sealed class DeleteOneToOneStatementBuilder(IDataModelService dataModelService) : StatementBuilder(dataModelService)
{
- public DeleteOneToOneStatementBuilder(IDataModelService dataModelService)
- : base(dataModelService)
- {
- }
-
public DeleteNode Build(ResourceType resourceType, string whereColumnName, object? whereValue)
{
ArgumentGuard.NotNull(resourceType);
diff --git a/src/Examples/DapperExample/TranslationToSql/Builders/DeleteResourceStatementBuilder.cs b/src/Examples/DapperExample/TranslationToSql/Builders/DeleteResourceStatementBuilder.cs
index 41794e8883..1910075a8c 100644
--- a/src/Examples/DapperExample/TranslationToSql/Builders/DeleteResourceStatementBuilder.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Builders/DeleteResourceStatementBuilder.cs
@@ -6,13 +6,8 @@
namespace DapperExample.TranslationToSql.Builders;
-internal sealed class DeleteResourceStatementBuilder : StatementBuilder
+internal sealed class DeleteResourceStatementBuilder(IDataModelService dataModelService) : StatementBuilder(dataModelService)
{
- public DeleteResourceStatementBuilder(IDataModelService dataModelService)
- : base(dataModelService)
- {
- }
-
public DeleteNode Build(ResourceType resourceType, params object[] idValues)
{
ArgumentGuard.NotNull(resourceType);
diff --git a/src/Examples/DapperExample/TranslationToSql/Builders/InsertStatementBuilder.cs b/src/Examples/DapperExample/TranslationToSql/Builders/InsertStatementBuilder.cs
index 7e444b45a1..5f8374df65 100644
--- a/src/Examples/DapperExample/TranslationToSql/Builders/InsertStatementBuilder.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Builders/InsertStatementBuilder.cs
@@ -6,13 +6,8 @@
namespace DapperExample.TranslationToSql.Builders;
-internal sealed class InsertStatementBuilder : StatementBuilder
+internal sealed class InsertStatementBuilder(IDataModelService dataModelService) : StatementBuilder(dataModelService)
{
- public InsertStatementBuilder(IDataModelService dataModelService)
- : base(dataModelService)
- {
- }
-
public InsertNode Build(ResourceType resourceType, IReadOnlyDictionary columnsToSet)
{
ArgumentGuard.NotNull(resourceType);
diff --git a/src/Examples/DapperExample/TranslationToSql/Builders/SqlQueryBuilder.cs b/src/Examples/DapperExample/TranslationToSql/Builders/SqlQueryBuilder.cs
index 3e3d48eb10..a082d3ecad 100644
--- a/src/Examples/DapperExample/TranslationToSql/Builders/SqlQueryBuilder.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Builders/SqlQueryBuilder.cs
@@ -8,7 +8,7 @@ namespace DapperExample.TranslationToSql.Builders;
///
/// Converts s into SQL text.
///
-internal sealed class SqlQueryBuilder : SqlTreeNodeVisitor
+internal sealed class SqlQueryBuilder(DatabaseProvider databaseProvider) : SqlTreeNodeVisitor
{
private static readonly char[] SpecialCharactersInLikeDefault =
[
@@ -26,7 +26,7 @@ internal sealed class SqlQueryBuilder : SqlTreeNodeVisitor _parametersByName = [];
private int _indentDepth;
@@ -35,11 +35,6 @@ internal sealed class SqlQueryBuilder : SqlTreeNodeVisitor Parameters => _parametersByName.Values.ToDictionary(parameter => parameter.Name, parameter => parameter.Value);
- public SqlQueryBuilder(DatabaseProvider databaseProvider)
- {
- _databaseProvider = databaseProvider;
- }
-
public string GetCommand(SqlTreeNode node)
{
ArgumentGuard.NotNull(node);
@@ -488,14 +483,9 @@ private IDisposable Indent()
return new RevertIndentOnDispose(this);
}
- private sealed class RevertIndentOnDispose : IDisposable
+ private sealed class RevertIndentOnDispose(SqlQueryBuilder owner) : IDisposable
{
- private readonly SqlQueryBuilder _owner;
-
- public RevertIndentOnDispose(SqlQueryBuilder owner)
- {
- _owner = owner;
- }
+ private readonly SqlQueryBuilder _owner = owner;
public void Dispose()
{
diff --git a/src/Examples/DapperExample/TranslationToSql/Builders/UpdateClearOneToOneStatementBuilder.cs b/src/Examples/DapperExample/TranslationToSql/Builders/UpdateClearOneToOneStatementBuilder.cs
index 4ccc5fec9a..712561528d 100644
--- a/src/Examples/DapperExample/TranslationToSql/Builders/UpdateClearOneToOneStatementBuilder.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Builders/UpdateClearOneToOneStatementBuilder.cs
@@ -6,13 +6,8 @@
namespace DapperExample.TranslationToSql.Builders;
-internal sealed class UpdateClearOneToOneStatementBuilder : StatementBuilder
+internal sealed class UpdateClearOneToOneStatementBuilder(IDataModelService dataModelService) : StatementBuilder(dataModelService)
{
- public UpdateClearOneToOneStatementBuilder(IDataModelService dataModelService)
- : base(dataModelService)
- {
- }
-
public UpdateNode Build(ResourceType resourceType, string setColumnName, string whereColumnName, object? whereValue)
{
ArgumentGuard.NotNull(resourceType);
diff --git a/src/Examples/DapperExample/TranslationToSql/Builders/UpdateResourceStatementBuilder.cs b/src/Examples/DapperExample/TranslationToSql/Builders/UpdateResourceStatementBuilder.cs
index 62fc3b7e20..a279ad45e5 100644
--- a/src/Examples/DapperExample/TranslationToSql/Builders/UpdateResourceStatementBuilder.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Builders/UpdateResourceStatementBuilder.cs
@@ -6,13 +6,8 @@
namespace DapperExample.TranslationToSql.Builders;
-internal sealed class UpdateResourceStatementBuilder : StatementBuilder
+internal sealed class UpdateResourceStatementBuilder(IDataModelService dataModelService) : StatementBuilder(dataModelService)
{
- public UpdateResourceStatementBuilder(IDataModelService dataModelService)
- : base(dataModelService)
- {
- }
-
public UpdateNode Build(ResourceType resourceType, IReadOnlyDictionary columnsToUpdate, params object[] idValues)
{
ArgumentGuard.NotNull(resourceType);
diff --git a/src/Examples/DapperExample/TranslationToSql/DataModel/FromEntitiesDataModelService.cs b/src/Examples/DapperExample/TranslationToSql/DataModel/FromEntitiesDataModelService.cs
index 0f030debdb..b0ba38f3a5 100644
--- a/src/Examples/DapperExample/TranslationToSql/DataModel/FromEntitiesDataModelService.cs
+++ b/src/Examples/DapperExample/TranslationToSql/DataModel/FromEntitiesDataModelService.cs
@@ -12,7 +12,7 @@ namespace DapperExample.TranslationToSql.DataModel;
///
/// Derives foreign keys and connection strings from an existing Entity Framework Core model.
///
-public sealed class FromEntitiesDataModelService : BaseDataModelService
+public sealed class FromEntitiesDataModelService(IResourceGraph resourceGraph) : BaseDataModelService(resourceGraph)
{
private readonly Dictionary _foreignKeysByRelationship = [];
private readonly Dictionary _columnNullabilityPerAttribute = [];
@@ -21,11 +21,6 @@ public sealed class FromEntitiesDataModelService : BaseDataModelService
public override DatabaseProvider DatabaseProvider => AssertHasDatabaseProvider();
- public FromEntitiesDataModelService(IResourceGraph resourceGraph)
- : base(resourceGraph)
- {
- }
-
public void Initialize(DbContext dbContext)
{
_connectionString = dbContext.Database.GetConnectionString();
diff --git a/src/Examples/DapperExample/TranslationToSql/Generators/ParameterGenerator.cs b/src/Examples/DapperExample/TranslationToSql/Generators/ParameterGenerator.cs
index bd4df111fc..aaa328e68f 100644
--- a/src/Examples/DapperExample/TranslationToSql/Generators/ParameterGenerator.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Generators/ParameterGenerator.cs
@@ -20,11 +20,5 @@ public void Reset()
_nameGenerator.Reset();
}
- private sealed class ParameterNameGenerator : UniqueNameGenerator
- {
- public ParameterNameGenerator()
- : base("@p")
- {
- }
- }
+ private sealed class ParameterNameGenerator() : UniqueNameGenerator("@p");
}
diff --git a/src/Examples/DapperExample/TranslationToSql/Generators/TableAliasGenerator.cs b/src/Examples/DapperExample/TranslationToSql/Generators/TableAliasGenerator.cs
index 39d5d9d702..a63bfdc01a 100644
--- a/src/Examples/DapperExample/TranslationToSql/Generators/TableAliasGenerator.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Generators/TableAliasGenerator.cs
@@ -3,10 +3,4 @@ namespace DapperExample.TranslationToSql.Generators;
///
/// Generates a SQL table alias with a unique name.
///
-internal sealed class TableAliasGenerator : UniqueNameGenerator
-{
- public TableAliasGenerator()
- : base("t")
- {
- }
-}
+internal sealed class TableAliasGenerator() : UniqueNameGenerator("t");
diff --git a/src/Examples/DapperExample/TranslationToSql/Transformations/StaleColumnReferenceRewriter.cs b/src/Examples/DapperExample/TranslationToSql/Transformations/StaleColumnReferenceRewriter.cs
index 03692baf2d..a632c43e51 100644
--- a/src/Examples/DapperExample/TranslationToSql/Transformations/StaleColumnReferenceRewriter.cs
+++ b/src/Examples/DapperExample/TranslationToSql/Transformations/StaleColumnReferenceRewriter.cs
@@ -290,14 +290,9 @@ private IReadOnlyList VisitList(IEnumerable nodes, ColumnVisitMode mode
return nodes.Select(element => TypedVisit(element, mode)).ToList();
}
- private sealed class PopStackOnDispose : IDisposable
+ private sealed class PopStackOnDispose(Stack stack) : IDisposable
{
- private readonly Stack _stack;
-
- public PopStackOnDispose(Stack stack)
- {
- _stack = stack;
- }
+ private readonly Stack _stack = stack;
public void Dispose()
{
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs
index e4b79fe7eb..2be0561011 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInSelectNode.cs
@@ -10,18 +10,13 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// SELECT t2.Id AS Id0 FROM (SELECT t1.Id FROM Users AS t1) AS t2
/// ]]>.
///
-internal sealed class ColumnInSelectNode : ColumnNode
+internal sealed class ColumnInSelectNode(ColumnSelectorNode selector, string? tableAlias) : ColumnNode(GetColumnName(selector), selector.Column.Type,
+ tableAlias)
{
- public ColumnSelectorNode Selector { get; }
+ public ColumnSelectorNode Selector { get; } = selector;
public bool IsVirtual => Selector.Alias != null || Selector.Column is ColumnInSelectNode { IsVirtual: true };
- public ColumnInSelectNode(ColumnSelectorNode selector, string? tableAlias)
- : base(GetColumnName(selector), selector.Column.Type, tableAlias)
- {
- Selector = selector;
- }
-
private static string GetColumnName(ColumnSelectorNode selector)
{
ArgumentGuard.NotNull(selector);
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs
index 8e8aab29ce..cd605e72a4 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/ColumnInTableNode.cs
@@ -8,13 +8,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// FROM Users AS t1
/// ]]>.
///
-internal sealed class ColumnInTableNode : ColumnNode
+internal sealed class ColumnInTableNode(string name, ColumnType type, string? tableAlias) : ColumnNode(name, type, tableAlias)
{
- public ColumnInTableNode(string name, ColumnType type, string? tableAlias)
- : base(name, type, tableAlias)
- {
- }
-
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
return visitor.VisitColumnInTable(this, argument);
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs
index 07ad67f144..d0b9e18ca2 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/CountSelectorNode.cs
@@ -8,13 +8,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// SELECT COUNT(*) FROM Users
/// ]]>.
///
-internal sealed class CountSelectorNode : SelectorNode
+internal sealed class CountSelectorNode(string? alias) : SelectorNode(alias)
{
- public CountSelectorNode(string? alias)
- : base(alias)
- {
- }
-
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
return visitor.VisitCountSelector(this, argument);
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs
index 8ec4ab5c20..3d29636212 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/FromNode.cs
@@ -5,13 +5,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// FROM Customers AS t1
/// ]]>.
///
-internal sealed class FromNode : TableAccessorNode
+internal sealed class FromNode(TableSourceNode source) : TableAccessorNode(source)
{
- public FromNode(TableSourceNode source)
- : base(source)
- {
- }
-
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
return visitor.VisitFrom(this, argument);
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs
index c86aea6d63..a9c05301a7 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/OneSelectorNode.cs
@@ -8,13 +8,8 @@ namespace DapperExample.TranslationToSql.TreeNodes;
/// SELECT 1 FROM Users
/// ]]>.
///
-internal sealed class OneSelectorNode : SelectorNode
+internal sealed class OneSelectorNode(string? alias) : SelectorNode(alias)
{
- public OneSelectorNode(string? alias)
- : base(alias)
- {
- }
-
public override TResult Accept(SqlTreeNodeVisitor visitor, TArgument argument)
{
return visitor.VisitOneSelector(this, argument);
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/OrderByTermNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/OrderByTermNode.cs
index 2c3fc80b3e..89fb4c219d 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/OrderByTermNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/OrderByTermNode.cs
@@ -3,12 +3,7 @@ namespace DapperExample.TranslationToSql.TreeNodes;
///
/// Represents the base type for terms in an .
///
-internal abstract class OrderByTermNode : SqlTreeNode
+internal abstract class OrderByTermNode(bool isAscending) : SqlTreeNode
{
- public bool IsAscending { get; }
-
- protected OrderByTermNode(bool isAscending)
- {
- IsAscending = isAscending;
- }
+ public bool IsAscending { get; } = isAscending;
}
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectorNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectorNode.cs
index 8a47a8af66..44ee14ea17 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectorNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/SelectorNode.cs
@@ -3,12 +3,7 @@ namespace DapperExample.TranslationToSql.TreeNodes;
///
/// Represents the base type for selectors in a .
///
-internal abstract class SelectorNode : SqlTreeNode
+internal abstract class SelectorNode(string? alias) : SqlTreeNode
{
- public string? Alias { get; }
-
- protected SelectorNode(string? alias)
- {
- Alias = alias;
- }
+ public string? Alias { get; } = alias;
}
diff --git a/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableSourceNode.cs b/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableSourceNode.cs
index 6628ed11dc..62ff5ad3ef 100644
--- a/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableSourceNode.cs
+++ b/src/Examples/DapperExample/TranslationToSql/TreeNodes/TableSourceNode.cs
@@ -5,17 +5,12 @@ namespace DapperExample.TranslationToSql.TreeNodes;
///
/// Represents the base type for tabular data sources, such as database tables and sub-queries.
///
-internal abstract class TableSourceNode : SqlTreeNode
+internal abstract class TableSourceNode(string? alias) : SqlTreeNode
{
public const string IdColumnName = nameof(Identifiable