Skip to content

Bump the dotnet group with 20 updates - #283

Open
dependabot[bot] wants to merge 7 commits into
mainfrom
dependabot/nuget/dot-config/dotnet-6ce6139eea
Open

Bump the dotnet group with 20 updates#283
dependabot[bot] wants to merge 7 commits into
mainfrom
dependabot/nuget/dot-config/dotnet-6ce6139eea

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 1, 2026

Copy link
Copy Markdown
Contributor

Review summary

Supply-chain review of all 20 updates: publication-age gate, OSV advisories, changelog and diff verification, breaking changes. Four follow-up commits sit on top of the Dependabot commit, and the branch has been rebased onto main.

18 of 20 taken as-is. NSubstitute is held back, and System.Linq.Dynamic.Core is removed rather than bumped.

Held: NSubstitute stays at 5.3.0

b64d9a24 pins NSubstitute at 5.3.0 rather than 6.0.0. 6.0.0 enables nullability on its public API, so Arg.Is<T> takes a Predicate<T?> even for non-nullable T, emitting CS8602/CS8604 at every call site whose lambda dereferences the parameter (90+ in this suite). Upstream has open, maintainer-acknowledged issues for exactly this (nsubstitute/NSubstitute#973, #976, #982, #983) and no 6.0.1 three weeks post-release. MockQueryable.NSubstitute declares [5.3.0, ), so there is no resolution conflict in either direction.

Revisit when 6.0.1 ships.

Analyzer bumps, measured rather than inferred

Both analyzers were run twice over identical code, varying only the analyzer version.

Bump Result
ReSharper 2026.1.3 → 2026.2.0 1667 → 1637 findings, zero new. The 30-finding delta is UnusedAutoPropertyAccessor.Global no longer misfiring on DTO classes, the rule our own gate already excludes
SonarAnalyzer 10.27 → 10.30 9 new rules, 77 new findings, all warnings, no build break

10.28 reclassified ~18 rules from Security Hotspot to Vulnerability, which looked like a build-break risk since .globalconfig maps category-vulnerability to error. Checked against an isolated build: SonarAnalyzer's Roslyn category strings do not match that key, so those rules still emit as warnings. That config key governs Microsoft's CA analyzers, which this bump does not affect.

8985f49b clears the two mechanical rules: regex execution bounded to 1s (S6444, 8 sites) and Where predicates folded into First/FirstOrDefault (S2971, 10 sites). S8949 (missing CancellationToken) and S8969 (redundant !, which has an open false-positive report SonarSource/sonar-dotnet#9824 against this exact version) are deliberately left alone.

Every security-flavoured new finding was checked individually and is a false positive or already justified in context: S2077 fires on a correctly parameterised query, S4790 on an HMACSHA1 required by a third-party API, S5332 on an XML namespace identifier, S1313 on the F5's internal IP, S4502 on the error page.

Notes

  • The SQLitePCLRaw pin stays. Microsoft.Data.Sqlite 10.0.10 still floors at [2.1.11, ), so the comment in Viper.test.csproj remains accurate. Its job is now preventing backwards resolution rather than GHSA-2m69-gcr7-jv3q, which 3.0.3 already cleared.
  • QuestPDF ships license terms v3.0, which are more permissive for a public academic institution than the v2.0 terms currently in use.
  • AWSSDK.Core 4.0.100.8 includes a path-containment hardening fix. The breaking change AWS flagged at 4.0.100.5 applies only to ServiceURL-configured clients; this repo has none.
  • Microsoft.Testing.Platform 2.3.0 changed a default: --zero-tests-policy is now allow-skipped, so an all-skipped run no longer fails with exit code 8. More lenient, worth knowing.
  • System.Linq.Dynamic.Core removed (736a1587). Zero usages anywhere, and a runtime string-to-expression-tree parser is attack surface with no offsetting benefit. Confirmed absent from the restore graph after a clean rebuild, so nothing depended on it transitively.

Smoke tested on TEST

Deployed via Jenkins #2289 and exercised on secure-test: all 21 health checks Healthy (including aws-ssm, campus-smtp, and nine db-*), the Hangfire dashboard reporting Hangfire 1.8.24, the RAPS role list (177 roles), AD group roles resolving correctly and returning clean 404s for unknown IDs, and a QuestPDF export rendering a 2-page report, which validates the recompiled native Skia binary.

The Vite proxy changes in 8985f49b only execute in Development (Program.cs:456), so they were validated separately against a local npm run dev: ~128 requests routed through the proxy, all 200/304, zero console errors.

Also fixed

74ce8de7 fixes a latent frontend bug found during that smoke test. It is not caused by this PR, only surfaced by it. viperFetch resolves to undefined on 4xx/5xx, overwriting the {} that RAPS views initialize and then dereference in templates, so a bad entity ID threw TypeError: Cannot read properties of undefined. Fourteen further views shared the identical pattern; all 15 are fixed.
Age gate: all 20 pass, 9 to 27 days old. OSV: no known advisories on any package, on either old or new versions.


Updated AWSSDK.Core from 4.0.100 to 4.0.100.8.

Release notes

Sourced from AWSSDK.Core's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated ClosedXML from 0.105.0 to 0.105.1.

Release notes

Sourced from ClosedXML's releases.

0.105.1

  • fix: bound SixLabors.Fonts to version range [1.0.0,3.0.0) by @​igitur in #​2870

Full Changelog: ClosedXML/ClosedXML@0.105.0...0.105.1

Commits viewable in compare view.

Updated dotnet-ef from 10.0.9 to 10.0.10.

Release notes

Sourced from dotnet-ef's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated DotNetDiag.HealthChecks.UI from 10.0.7 to 10.0.11.

Release notes

Sourced from DotNetDiag.HealthChecks.UI's releases.

10.0.11

Full Changelog: DotNetDiag/HealthChecks@v10.0.10...v10.0.11

10.0.10

Full Changelog: DotNetDiag/HealthChecks@v10.0.9...v10.0.10

10.0.9

v10.0.9

This release expands the DotNetDiag HealthChecks package catalog with several new providers, refreshes dependency versions for the current .NET target-framework era, and fixes a few reliability issues in SurrealDB and UI storage-provider test coverage.

Highlights

  • Added new health check packages:
    • DotNetDiag.HealthChecks.Gcp.CloudStorage
    • DotNetDiag.HealthChecks.Harbor
    • DotNetDiag.HealthChecks.Minio
    • DotNetDiag.HealthChecks.OpenSearch
    • DotNetDiag.HealthChecks.SonnetDB
  • Updated package catalog, root README entries, package READMEs, API approval files, Codecov flags, labeler entries, and CI/CD workflows for the new packages.
  • Refreshed NuGet package versions with target-framework-aware rules: .NET 8-era packages remain on appropriate .NET 8-compatible versions, while net10.0 paths can use .NET 10-era dependencies.

New Packages

Google Cloud Storage

Added DotNetDiag.HealthChecks.Gcp.CloudStorage.

The check can verify Google Cloud Storage reachability by listing buckets for a configured project or by fetching metadata for a configured bucket. It supports resolving StorageClient from DI or providing it through a factory.

Harbor

Added DotNetDiag.HealthChecks.Harbor.

The check calls Harbor's /api/v2.0/health endpoint and validates the overall Harbor health response. It also supports required component validation, custom health endpoint paths, request customization, and named HttpClient configuration.

MinIO

Added DotNetDiag.HealthChecks.Minio.

The check supports MinIO readiness, liveness, cluster, and cluster-read probes, plus bucket existence and service reachability checks through the MinIO S3-compatible API.

OpenSearch

Added DotNetDiag.HealthChecks.OpenSearch.

The check supports OpenSearch ping checks, optional cluster health API checks, secured cluster configuration, and reuse of an existing IOpenSearchClient.

SonnetDB

Added DotNetDiag.HealthChecks.SonnetDB.

The check validates the SonnetDB /healthz endpoint, supports authenticated requests, captures readiness metadata, and can optionally require Copilot readiness.

Fixes

  • Fixed SurrealDB health check DI resolution for newer SurrealDb.Net registration patterns, including scoped/session-based registrations.
    ... (truncated)

10.0.8

What's Changed

New Contributors

Full Changelog: DotNetDiag/HealthChecks@v10.0.7...v10.0.8

Commits viewable in compare view.

Updated DotNetDiag.HealthChecks.UI.Client from 10.0.7 to 10.0.11.

Release notes

Sourced from DotNetDiag.HealthChecks.UI.Client's releases.

10.0.11

Full Changelog: DotNetDiag/HealthChecks@v10.0.10...v10.0.11

10.0.10

Full Changelog: DotNetDiag/HealthChecks@v10.0.9...v10.0.10

10.0.9

v10.0.9

This release expands the DotNetDiag HealthChecks package catalog with several new providers, refreshes dependency versions for the current .NET target-framework era, and fixes a few reliability issues in SurrealDB and UI storage-provider test coverage.

Highlights

  • Added new health check packages:
    • DotNetDiag.HealthChecks.Gcp.CloudStorage
    • DotNetDiag.HealthChecks.Harbor
    • DotNetDiag.HealthChecks.Minio
    • DotNetDiag.HealthChecks.OpenSearch
    • DotNetDiag.HealthChecks.SonnetDB
  • Updated package catalog, root README entries, package READMEs, API approval files, Codecov flags, labeler entries, and CI/CD workflows for the new packages.
  • Refreshed NuGet package versions with target-framework-aware rules: .NET 8-era packages remain on appropriate .NET 8-compatible versions, while net10.0 paths can use .NET 10-era dependencies.

New Packages

Google Cloud Storage

Added DotNetDiag.HealthChecks.Gcp.CloudStorage.

The check can verify Google Cloud Storage reachability by listing buckets for a configured project or by fetching metadata for a configured bucket. It supports resolving StorageClient from DI or providing it through a factory.

Harbor

Added DotNetDiag.HealthChecks.Harbor.

The check calls Harbor's /api/v2.0/health endpoint and validates the overall Harbor health response. It also supports required component validation, custom health endpoint paths, request customization, and named HttpClient configuration.

MinIO

Added DotNetDiag.HealthChecks.Minio.

The check supports MinIO readiness, liveness, cluster, and cluster-read probes, plus bucket existence and service reachability checks through the MinIO S3-compatible API.

OpenSearch

Added DotNetDiag.HealthChecks.OpenSearch.

The check supports OpenSearch ping checks, optional cluster health API checks, secured cluster configuration, and reuse of an existing IOpenSearchClient.

SonnetDB

Added DotNetDiag.HealthChecks.SonnetDB.

The check validates the SonnetDB /healthz endpoint, supports authenticated requests, captures readiness metadata, and can optionally require Copilot readiness.

Fixes

  • Fixed SurrealDB health check DI resolution for newer SurrealDb.Net registration patterns, including scoped/session-based registrations.
    ... (truncated)

10.0.8

What's Changed

New Contributors

Full Changelog: DotNetDiag/HealthChecks@v10.0.7...v10.0.8

Commits viewable in compare view.

Updated DotNetDiag.HealthChecks.UI.InMemory.Storage from 10.0.7 to 10.0.11.

Release notes

Sourced from DotNetDiag.HealthChecks.UI.InMemory.Storage's releases.

10.0.11

Full Changelog: DotNetDiag/HealthChecks@v10.0.10...v10.0.11

10.0.10

Full Changelog: DotNetDiag/HealthChecks@v10.0.9...v10.0.10

10.0.9

v10.0.9

This release expands the DotNetDiag HealthChecks package catalog with several new providers, refreshes dependency versions for the current .NET target-framework era, and fixes a few reliability issues in SurrealDB and UI storage-provider test coverage.

Highlights

  • Added new health check packages:
    • DotNetDiag.HealthChecks.Gcp.CloudStorage
    • DotNetDiag.HealthChecks.Harbor
    • DotNetDiag.HealthChecks.Minio
    • DotNetDiag.HealthChecks.OpenSearch
    • DotNetDiag.HealthChecks.SonnetDB
  • Updated package catalog, root README entries, package READMEs, API approval files, Codecov flags, labeler entries, and CI/CD workflows for the new packages.
  • Refreshed NuGet package versions with target-framework-aware rules: .NET 8-era packages remain on appropriate .NET 8-compatible versions, while net10.0 paths can use .NET 10-era dependencies.

New Packages

Google Cloud Storage

Added DotNetDiag.HealthChecks.Gcp.CloudStorage.

The check can verify Google Cloud Storage reachability by listing buckets for a configured project or by fetching metadata for a configured bucket. It supports resolving StorageClient from DI or providing it through a factory.

Harbor

Added DotNetDiag.HealthChecks.Harbor.

The check calls Harbor's /api/v2.0/health endpoint and validates the overall Harbor health response. It also supports required component validation, custom health endpoint paths, request customization, and named HttpClient configuration.

MinIO

Added DotNetDiag.HealthChecks.Minio.

The check supports MinIO readiness, liveness, cluster, and cluster-read probes, plus bucket existence and service reachability checks through the MinIO S3-compatible API.

OpenSearch

Added DotNetDiag.HealthChecks.OpenSearch.

The check supports OpenSearch ping checks, optional cluster health API checks, secured cluster configuration, and reuse of an existing IOpenSearchClient.

SonnetDB

Added DotNetDiag.HealthChecks.SonnetDB.

The check validates the SonnetDB /healthz endpoint, supports authenticated requests, captures readiness metadata, and can optionally require Copilot readiness.

Fixes

  • Fixed SurrealDB health check DI resolution for newer SurrealDb.Net registration patterns, including scoped/session-based registrations.
    ... (truncated)

10.0.8

What's Changed

New Contributors

Full Changelog: DotNetDiag/HealthChecks@v10.0.7...v10.0.8

Commits viewable in compare view.

Updated Hangfire.AspNetCore from 1.8.23 to 1.8.24.

Release notes

Sourced from Hangfire.AspNetCore's releases.

1.8.24

Release Notes

Hangfire.Core

  • Added – Russian translation for Dashboard UI (by @​akortunov).
  • Changed – Slow log can now detect blocked extension filter executions.

Commits viewable in compare view.

Updated Hangfire.Core from 1.8.23 to 1.8.24.

Release notes

Sourced from Hangfire.Core's releases.

1.8.24

Release Notes

Hangfire.Core

  • Added – Russian translation for Dashboard UI (by @​akortunov).
  • Changed – Slow log can now detect blocked extension filter executions.

Commits viewable in compare view.

Updated Hangfire.SqlServer from 1.8.23 to 1.8.24.

Release notes

Sourced from Hangfire.SqlServer's releases.

1.8.24

Release Notes

Hangfire.Core

  • Added – Russian translation for Dashboard UI (by @​akortunov).
  • Changed – Slow log can now detect blocked extension filter executions.

Commits viewable in compare view.

Updated HtmlSanitizer from 9.0.892 to 9.0.967.

Release notes

Sourced from HtmlSanitizer's releases.

No release notes found for this version range.

Commits viewable in compare view.

Updated jetbrains.resharper.globaltools from 2026.1.3 to 2026.2.0.

Updated Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1.

Release notes

Sourced from Microsoft.NET.Test.Sdk's releases.

18.8.1

What's Changed

Full Changelog: microsoft/vstest@v18.8.0...v18.8.1

18.8.0

What's Changed

Full Changelog: microsoft/vstest@v18.7.0...v18.8.0

Commits viewable in compare view.

Updated Microsoft.Testing.Platform from 2.2.3 to 2.3.2.

Release notes

Sourced from Microsoft.Testing.Platform's releases.

2.3.0-preview-20220810-02

See release notes here.

2.2.10

See release notes here.

2.2.10-preview-20220414-01

See release notes here.

2.2.9

Parallel output

🙇 Shout out to @​SimonCropp, for bringing this functionality to XUnit in his https://github.com/SimonCropp/XunitContext project. And being an inspiration for implementing this.

MSTest 2.2.9 captures all Console output and attaches it to the correct test, even if you are running tests in parallel. This output is captured from your test code as well as from the tested code. And it requires no special setup.

Before

In 2.2.8, test output is scattered among tests, in our example, one unlucky test gets all the output of other tests just mixed together:

image

After

With 2.2.9, each output is correctly attached to the test that produced it:

image
image

Also notice that we are also capturing debug, trace and error. And we are not awaiting the FastChild method, and the output is still assigned correctly. Souce code.

Limitations

Due to the way that class and assembly initialize, and cleanup are invoked, their output will end up in the first test that run (or last for cleanup). This is unfortunately not easily fixable.

See release notes here.

2.2.8

See release notes here.

2.2.7

See release notes here.

2.2.6

See release notes here.

2.2.5

See release notes here.

2.2.4

See release notes here.

2.2.4-preview-20210331-02

See release notes here.

Commits viewable in compare view.

Updated NLog.MailKit from 6.1.4 to 6.1.5.

Release notes

Sourced from NLog.MailKit's releases.

6.1.5

  • Updated MailKit ver. 4.17.0 (Improve Dependencies)
  • Updated NLog ver. 6.1.4

Commits viewable in compare view.

Updated NLog.Web.AspNetCore from 6.1.3 to 6.1.4.

Release notes

Sourced from NLog.Web.AspNetCore's releases.

6.1.4

  • #​1151 Updated dependency NLog v6.1.4 (@​snakefoot)
  • #​1145 AppVeyor - Visual Studio 2026 (@​snakefoot)

Commits viewable in compare view.

Updated NSubstitute from 5.3.0 to 6.0.0.

Release notes

Sourced from NSubstitute's releases.

6.0.0

ℹ️ No changes from Release Candidate 1.

NSubstitute v6.0.0

From RC1 notes:

  • [NEW] ArgMatchers.Matching predicate matcher as an alternative to Is(Expression<Predicate<T>>. (.NET6 and above.)
  • [UPDATE] Improved support for custom argument matchers. Arg.Is now accepts arg matchers.
  • [UPDATE][BREAKING] Update target frameworks: .NET8, .NET Standard 2.0
  • [UPDATE][BREAKING] Remove legacy obsolete API
  • [UPDATE][BREAKING] Mark as obsolete api CompatArg with pre c# 7.0 support
  • [UPDATE][BREAKING] Nullability is enabled for public api for .NET 8+ TFMs
  • [UPDATE] Migrate documentation to docfx platform and update samples to NUnit 4
  • [NEW] Added NuGet Package README file.

Full change list

6.0.0-rc.1

NSubstitute v6.0.0 Release Candidate 1

Due to the large number of changes in this release, we wanted to start with a release candidate to ensure we've correctly captured breaking changes.

  • [NEW] ArgMatchers.Matching predicate matcher as an alternative to Is(Expression<Predicate<T>>. (.NET6 and above.)
  • [UPDATE] Improved support for custom argument matchers. Arg.Is now accepts arg matchers.
  • [UPDATE][BREAKING] Update target frameworks: .NET8, .NET Standard 2.0
  • [UPDATE][BREAKING] Remove legacy obsolete API
  • [UPDATE][BREAKING] Mark as obsolete api CompatArg with pre c# 7.0 support
  • [UPDATE][BREAKING] Nullability is enabled for public api for .NET 8+ TFMs
  • [UPDATE] Migrate documentation to docfx platform and update samples to NUnit 4
  • [NEW] Added NuGet Package README file.

Full change list

Commits viewable in compare view.

Updated QuestPDF from 2026.6.0 to 2026.7.1.

Release notes

Sourced from QuestPDF's releases.

2026.7.1

Improved performance

PDF generation is now significantly faster. The Skia native dependency has been recompiled with speed-oriented optimizations (favoring performance over binary size) and with SIMD instructions enabled.

The impact depends on document content and platform. For example, generating image-heavy documents that require image rescaling can be several times faster on Windows x64 🎉

Note: this change slightly increases the size of the native dependency by around 20%.


Continuous performance monitoring

We have also built a solid foundation for measuring library performance going forward. A new GitHub Actions workflow benchmarks QuestPDF across all supported operating systems, processor architectures, and .NET releases.

This infrastructure helps us ensure that performance remains stable and consistent across all platforms, and allows us to detect regressions early — before they ever reach a release.

2026.7.0

  • Updated licensing terms and conditions to version 3.0, including the removal of the developer seat limit for all paid licenses (details: https://www.questpdf.com/pricing).
  • Added full support for .NET Native AOT and trimming.
  • Added and improved warning messages related to library configuration.
  • Fixed a rare rendering issue where the footer was placed incorrectly when the page content was empty.

2026.6.1

  • Updated the Skia native dependency to M150.
  • Improved text rendering stability when handling an excessive number of whitespace characters.
  • Improved the failure message shown when the library runs on an unsupported platform (e.g., Android, iOS, or WASM).
  • Improved platform compatibility checks and introduced more advanced fallback mechanisms.
  • Improved diagnostics for missing font glyph exceptions.
  • Improved PDF output consistency of section links by avoiding name escaping and removing unnecessary documentId prefix.
  • Made the Image.Size property public.

Commits viewable in compare view.

Updated SonarAnalyzer.CSharp from 10.27.0.140913 to 10.30.0.144632.

Release notes

Sourced from SonarAnalyzer.CSharp's releases.

10.30.0.144632

Release notes - .NET Analyzers - 10.30

Feature

NET-1536 Implement rule S8970: Null-forgiving operators should not be used when nullable warnings are disabled
NET-3436 Implement rule S8949: Use the overload that accepts a CancellationToken
NET-3810 Fix: Protobuf Importer logs debug on excluded files
NET-3877 Implement rule S8747: Migrations should not narrow column types without converting existing data
NET-4091 Implement rule S8969: Null-forgiving operators should not be redundant
NET-4120 Update RSPEC before 10.30 release

False Positive

NET-1541 Fix S3459 FP: support classes marked with [AutoConstructor] attribute
NET-1583 Fix S6967 FP: Raises when model has no validation attributes
NET-1840 Fix S3903 FP: top-level statements and partial Program in separate file
NET-4059 Improve precision of S8949 (CancellationTokenShouldBeUsed) - umbrella
NET-4191 Fix S3169 FP: Should not raise in Azure Cosmos

False Negative

NET-3819 Fix S1244 FN: Should report on Double.Equals

Bug

NET-4107 Fix S4026 Race Condition

10.29.0.143774

Release notes - .NET Analyzers - 10.29

Feature

NET-3997 Move S6444 out of hotspot
NET-4060 Update RSPEC before 10.29 release

False Positive

NET-1626 Fix S6444 FP: REGEX_DEFAULT_MATCH_TIMEOUT

False Negative

NET-3920 Fix S2971 FN: Should raise on EntityFramework IQueryables
NET-3921 Fix S1155 FN: Should raise on EntityFramework IQueryables
NET-3922 Fix S3981 FN: Should raise on EntityFramework IQueryables
NET-3924 Fix S3169 FN: Should raise on EntityFramework IQueryables

10.28.0.143324

Release notes - .NET Analyzers - 10.28

Feature

NET-1990 S100/S101: Configuration for custom acronyms
NET-2280 New Rule T0048: Avoid is not { } value
NET-3802 Update RSPEC before 10.28 release
NET-3818 Change Protobuf Info message to Debug
NET-3820 Coverage warnings should surface as Analysis Warnings
NET-3827 Create RSPEC for S8717: Multiple "[Key]" attributes should not be used to define a composite key
NET-3843 Implement rule S8717: Multiple "[Key]" attributes should not be used to define a composite key
NET-3949 Modify rule S2696: add fix guidance, compliant example, and exceptions
NET-3950 Modify rule S1135: add compliant example and fix guidance
NET-3951 Modify rule S108: give the C# page its own code examples
NET-3952 Modify rule S1133: add rationale, fix guidance, code examples
NET-3953 Modify rule S3251: add compliant example, fix guidance, and exceptions
NET-3967 Move S1313 out of hotspot
NET-3969 Move S2077 out of hotspot
NET-3972 Move S2092 and S3330 out of hotspot
NET-3973 Move S2245 out of hotspot
NET-3975 Move S2257 out of hotspot
NET-3976 Move S4036 out of hotspot
NET-3978 Move S4502 out of hotspot
NET-3980 Move S4507 out of hotspot
NET-3982 Move S5122 out of hotspot
NET-3983 Move S5332 out of hotspot
NET-3993 Move S5443 out of hotspot
NET-3995 Move S5753 out of hotspot
NET-3996 Move S5766 out of hotspot
NET-3998 Move S6640 out of hotspot
NET-4000 Move S4790 out of hotspot
NET-4001 Move S5693 out of hotspot
NET-4008 Change S1313 message
NET-4009 Change S2257 message
NET-4010 Change S4036 message
NET-4011 Change S2077 message

False Positive

NET-3564 Fix FP S6966: Do not raise for methods for SqlDataReader.IsDBNull/GetFieldValue
NET-3808 Fix S4260 FP: Don't raise on extension properties
NET-3821 Fix S1244 FP: Should not raise on comparison to 0
NET-3825 Fix S2221 FP: Do not raise on async void
NET-3878 Fix S3358 FP: Suggesting to extract ternary from EF Core select
NET-3914 Fix T0044 FP: Should not raise on locator annotaitons
NET-3926 Fix S6608 FP: Should not raise inside expression tree
NET-3927 Fix S6603 FP: Should not raise inside expression tree
NET-3932 S2068: Do not raise on @​paramName and $paramName

False Negative

NET-1673 Fix S4790 FN: default parameters
NET-2846 Fix S1117 FN: Extensions, Partial Events
... (truncated)

Commits viewable in compare view.

Updated SQLitePCLRaw.bundle_e_sqlite3 from 3.0.3 to 3.0.4.

Release notes

Sourced from SQLitePCLRaw.bundle_e_sqlite3's releases.

3.0.4

Update SQLitePCLRaw.bundle_e_sqlite3 to reference SourceGear.sqlite3 version 3.53.3.

Commits viewable in compare view.

Updated System.Linq.Dynamic.Core from 1.7.2 to 1.7.3.

Release notes

Sourced from System.Linq.Dynamic.Core's releases.

1.7.3

What's Changed

Full Changelog: zzzprojects/System.Linq.Dynamic.Core@v1.7.2...v1.7.3

Commits viewable in compare view.

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

@dependabot dependabot Bot added .NET Pull requests that update .net code dependencies Pull requests that update a dependency file labels Aug 1, 2026
@codecov-commenter

Copy link
Copy Markdown

Bundle Report

Bundle size has no change ✅

@codecov-commenter

codecov-commenter commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 50.09%. Comparing base (a34cbd2) to head (49afda9).

Files with missing lines Patch % Lines
web/Areas/RAPS/Services/VMACSExport.cs 0.00% 3 Missing ⚠️
...b/Areas/RAPS/Controllers/AdGroupRolesController.cs 0.00% 2 Missing ⚠️
web/ViteProxyHelpers.cs 71.42% 2 Missing ⚠️
web/Areas/Students/Services/PhotoExportService.cs 0.00% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #283   +/-   ##
=======================================
  Coverage   50.09%   50.09%           
=======================================
  Files         998      998           
  Lines       58370    58374    +4     
  Branches     5858     5858           
=======================================
+ Hits        29239    29241    +2     
- Misses      28228    28230    +2     
  Partials      903      903           
Flag Coverage Δ
backend 49.25% <50.00%> (+<0.01%) ⬆️
frontend 58.45% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

dependabot Bot and others added 3 commits August 4, 2026 08:32
Bumps AWSSDK.Core from 4.0.100 to 4.0.100.8
Bumps ClosedXML from 0.105.0 to 0.105.1
Bumps dotnet-ef from 10.0.9 to 10.0.10
Bumps DotNetDiag.HealthChecks.UI from 10.0.7 to 10.0.11
Bumps DotNetDiag.HealthChecks.UI.Client from 10.0.7 to 10.0.11
Bumps DotNetDiag.HealthChecks.UI.InMemory.Storage from 10.0.7 to 10.0.11
Bumps Hangfire.AspNetCore from 1.8.23 to 1.8.24
Bumps Hangfire.Core from 1.8.23 to 1.8.24
Bumps Hangfire.SqlServer from 1.8.23 to 1.8.24
Bumps HtmlSanitizer from 9.0.892 to 9.0.967
Bumps jetbrains.resharper.globaltools from 2026.1.3 to 2026.2.0
Bumps Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1
Bumps Microsoft.Testing.Platform from 2.2.3 to 2.3.2
Bumps NLog.MailKit from 6.1.4 to 6.1.5
Bumps NLog.Web.AspNetCore from 6.1.3 to 6.1.4
Bumps NSubstitute from 5.3.0 to 6.0.0
Bumps QuestPDF from 2026.6.0 to 2026.7.1
Bumps SonarAnalyzer.CSharp from 10.27.0.140913 to 10.30.0.144632
Bumps SQLitePCLRaw.bundle_e_sqlite3 from 3.0.3 to 3.0.4
Bumps System.Linq.Dynamic.Core from 1.7.2 to 1.7.3

---
updated-dependencies:
- dependency-name: AWSSDK.Core
  dependency-version: 4.0.100.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: ClosedXML
  dependency-version: 0.105.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: dotnet-ef
  dependency-version: 10.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: DotNetDiag.HealthChecks.UI
  dependency-version: 10.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: DotNetDiag.HealthChecks.UI.Client
  dependency-version: 10.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: DotNetDiag.HealthChecks.UI.InMemory.Storage
  dependency-version: 10.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: Hangfire.AspNetCore
  dependency-version: 1.8.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: Hangfire.Core
  dependency-version: 1.8.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: Hangfire.SqlServer
  dependency-version: 1.8.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: HtmlSanitizer
  dependency-version: 9.0.967
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: jetbrains.resharper.globaltools
  dependency-version: 2026.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dotnet
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-version: 18.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dotnet
- dependency-name: Microsoft.Testing.Platform
  dependency-version: 2.3.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dotnet
- dependency-name: NLog.MailKit
  dependency-version: 6.1.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: NLog.Web.AspNetCore
  dependency-version: 6.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: NSubstitute
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: dotnet
- dependency-name: QuestPDF
  dependency-version: 2026.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dotnet
- dependency-name: SonarAnalyzer.CSharp
  dependency-version: 10.30.0.144632
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dotnet
- dependency-name: SQLitePCLRaw.bundle_e_sqlite3
  dependency-version: 3.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
- dependency-name: System.Linq.Dynamic.Core
  dependency-version: 1.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dotnet
...

Signed-off-by: dependabot[bot] <support@github.com>
- 6.0.0 types Arg.Is<T> as Predicate<T?>, emitting CS8602/CS8604 across
  the suite; upstream nsubstitute/NSubstitute#973 and #976 are open
- bound regex execution to 1s so pathological input cannot pin a
  request thread (S6444)
- fold Where predicates into First/FirstOrDefault (S2971)
@rlorenzo
rlorenzo force-pushed the dependabot/nuget/dot-config/dotnet-6ce6139eea branch from 29776e0 to 8985f49 Compare August 4, 2026 15:35
- no usages anywhere; a runtime string-to-expression-tree parser is
  attack surface with no offsetting benefit here
- viperFetch resolves to undefined on 4xx/5xx, overwriting the initial
  {} and throwing in templates that dereference it, e.g. {{group.name}}
- applied to all 15 views sharing the pattern, not only the one found
@rlorenzo

rlorenzo commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The PR updates .NET tools and packages, simplifies LINQ lookups, adds one-second regex timeouts, and applies nullish fallbacks to RAPS fetch responses.

Changes

Maintenance updates

Layer / File(s) Summary
Dependency and tool updates
.config/dotnet-tools.json, test/Viper.test.csproj, web/Viper.csproj
Tool and package versions are updated. System.Linq.Dynamic.Core is removed. Compatibility and SQLite dependency notes are added.
Regex execution timeouts
web/Areas/Effort/Services/CourseClassificationService.cs, web/Areas/Students/Services/*.cs, web/ViteProxyHelpers.cs
Regular-expression operations now use a one-second match timeout.
Predicate-based LINQ lookups
test/CTS/*.cs, web/Areas/RAPS/Controllers/AdGroupRolesController.cs, web/Areas/RAPS/Services/*.cs
Equivalent Where(...).First(...) and Where(...).FirstOrDefault() calls use predicate overloads directly. The cache user query uses AsNoTracking().
RAPS nullish fetch fallbacks
web/Areas/RAPS/Views/Groups/*.cshtml, web/Areas/RAPS/Views/Members/*.cshtml, web/Areas/RAPS/Views/Permissions/*.cshtml, web/Areas/RAPS/Views/Roles/*.cshtml
Fetched group, member, permission, role, and role-template values default to empty objects or arrays when responses are nullish. Group controls are disabled when required identifiers are unavailable.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • ucdavis/VIPER#173: Both PRs update dependency declarations in the tool and project configuration files.

Suggested reviewers: rlorenzo, bsedwards

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately identifies the primary change: updating a grouped set of 20 .NET dependencies.
Description check ✅ Passed The description directly documents the dependency updates, analyzer changes, frontend fixes, testing, and security review.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dependabot/nuget/dot-config/dotnet-6ce6139eea

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/Areas/RAPS/Controllers/AdGroupRolesController.cs`:
- Around line 29-30: Add AsNoTracking() to the read-only EF Core queries in
GroupExists at web/Areas/RAPS/Controllers/AdGroupRolesController.cs:29-30, the
AaudUser lookup in web/Areas/RAPS/Services/RAPSCacheService.cs:19 after
confirming the cache helper does not require tracking, and the fallback user
lookup in web/Areas/RAPS/Services/VMACSExport.cs:217. Preserve the existing
query behavior while disabling change tracking for all three lookups.

In `@web/Areas/RAPS/Views/Groups/Members.cshtml`:
- Line 116: Update the group initialization around viperFetch and the related
group actions so failed fetches leave those actions disabled or hidden. Gate
syncGroup and the edit link on available group.groupId and group.groupRoleId,
preventing Groups/undefined/Sync and roleId=undefined while preserving the
heading fallback.

In `@web/Areas/RAPS/Views/Members/History.cshtml`:
- Around line 58-60: Update the history-dates assignment in mounted() to default
the viperFetch result to an empty array before calling map. Preserve the
existing date-mapping behavior when the request returns data, while ensuring
undefined results do not throw.

In `@web/Areas/RAPS/Views/Roles/ApplyTemplate.cshtml`:
- Line 145: Update the nullish fallback in
web/Areas/RAPS/Views/Roles/ApplyTemplate.cshtml at line 145 to provide
roleTemplateRoles as an empty array for the downstream reduce call; update the
fallback in web/Areas/RAPS/Views/Roles/Members.cshtml at line 165 to provide
instance as an empty string for the downstream indexOf call.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c4a412b5-f374-447d-bc21-3990a7c10822

📥 Commits

Reviewing files that changed from the base of the PR and between a34cbd2 and 74ce8de.

📒 Files selected for processing (27)
  • .config/dotnet-tools.json
  • test/CTS/AssessmentControllerTest.cs
  • test/CTS/SetupAssessments.cs
  • test/Viper.test.csproj
  • web/Areas/Effort/Services/CourseClassificationService.cs
  • web/Areas/RAPS/Controllers/AdGroupRolesController.cs
  • web/Areas/RAPS/Services/RAPSCacheService.cs
  • web/Areas/RAPS/Services/VMACSExport.cs
  • web/Areas/RAPS/Views/Groups/Members.cshtml
  • web/Areas/RAPS/Views/Groups/Roles.cshtml
  • web/Areas/RAPS/Views/Members/History.cshtml
  • web/Areas/RAPS/Views/Members/Permissions.cshtml
  • web/Areas/RAPS/Views/Members/RSOP.cshtml
  • web/Areas/RAPS/Views/Members/Roles.cshtml
  • web/Areas/RAPS/Views/Permissions/AllMembers.cshtml
  • web/Areas/RAPS/Views/Permissions/Members.cshtml
  • web/Areas/RAPS/Views/Permissions/Roles.cshtml
  • web/Areas/RAPS/Views/Permissions/RolesRO.cshtml
  • web/Areas/RAPS/Views/Roles/ApplyTemplate.cshtml
  • web/Areas/RAPS/Views/Roles/DelegateRoles.cshtml
  • web/Areas/RAPS/Views/Roles/Members.cshtml
  • web/Areas/RAPS/Views/Roles/Permissions.cshtml
  • web/Areas/RAPS/Views/Roles/TemplateRoles.cshtml
  • web/Areas/Students/Services/PhotoExportService.cs
  • web/Areas/Students/Services/PhotoService.cs
  • web/Viper.csproj
  • web/ViteProxyHelpers.cs

Comment thread web/Areas/RAPS/Controllers/AdGroupRolesController.cs
Comment thread web/Areas/RAPS/Views/Groups/Members.cshtml
Comment thread web/Areas/RAPS/Views/Members/History.cshtml
Comment thread web/Areas/RAPS/Views/Roles/ApplyTemplate.cshtml Outdated
- ?? {} stopped templates throwing but left callers dereferencing
  undefined properties: role.instance.indexOf, roleTemplateRoles.reduce
- guard Sync/Edit actions so a failed group fetch cannot post to
  Groups/undefined/Sync or link to roleId=undefined
- default array-returning fetches to [] where .map/.filter follow
- AsNoTracking on two read-only lookups
@rlorenzo

rlorenzo commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/Areas/RAPS/Services/VMACSExport.cs`:
- Line 217: Update the fallback user lookup in the VMACS export flow to call
AsNoTracking() on _RAPSContext.VwAaudUser before FirstOrDefault, preserving the
existing LoginId filter and UserList creation behavior.

In `@web/Areas/RAPS/Views/Members/History.cshtml`:
- Line 53: Update getAuditLog around the auditLog assignment to handle a null or
cleared startDate before accessing startDate.value. Preserve the existing fetch
behavior when a date is selected, and use the API’s established no-filter
request behavior when no date is selected.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 30a28c2f-540a-45cd-8a44-e426a551419e

📥 Commits

Reviewing files that changed from the base of the PR and between a34cbd2 and 76bc026.

📒 Files selected for processing (28)
  • .config/dotnet-tools.json
  • test/CTS/AssessmentControllerTest.cs
  • test/CTS/SetupAssessments.cs
  • test/Viper.test.csproj
  • web/Areas/Effort/Services/CourseClassificationService.cs
  • web/Areas/RAPS/Controllers/AdGroupRolesController.cs
  • web/Areas/RAPS/Services/RAPSCacheService.cs
  • web/Areas/RAPS/Services/VMACSExport.cs
  • web/Areas/RAPS/Views/Groups/List.cshtml
  • web/Areas/RAPS/Views/Groups/Members.cshtml
  • web/Areas/RAPS/Views/Groups/Roles.cshtml
  • web/Areas/RAPS/Views/Members/History.cshtml
  • web/Areas/RAPS/Views/Members/Permissions.cshtml
  • web/Areas/RAPS/Views/Members/RSOP.cshtml
  • web/Areas/RAPS/Views/Members/Roles.cshtml
  • web/Areas/RAPS/Views/Permissions/AllMembers.cshtml
  • web/Areas/RAPS/Views/Permissions/Members.cshtml
  • web/Areas/RAPS/Views/Permissions/Roles.cshtml
  • web/Areas/RAPS/Views/Permissions/RolesRO.cshtml
  • web/Areas/RAPS/Views/Roles/ApplyTemplate.cshtml
  • web/Areas/RAPS/Views/Roles/DelegateRoles.cshtml
  • web/Areas/RAPS/Views/Roles/Members.cshtml
  • web/Areas/RAPS/Views/Roles/Permissions.cshtml
  • web/Areas/RAPS/Views/Roles/TemplateRoles.cshtml
  • web/Areas/Students/Services/PhotoExportService.cs
  • web/Areas/Students/Services/PhotoService.cs
  • web/Viper.csproj
  • web/ViteProxyHelpers.cs

Comment thread web/Areas/RAPS/Services/VMACSExport.cs Outdated
Comment thread web/Areas/RAPS/Views/Members/History.cshtml Outdated
- clearing the date select leaves startDate null, so getAuditLog threw on
  .value before the request ran; omit the filter to show full history
- AsNoTracking on the VMACS export fallback user lookup
@rlorenzo

rlorenzo commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor
Action performed

Full review triggered.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .net code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants