fix: resolve solution analyzer diagnostics - #310
Merged
Conversation
Source changes: - resolve analyzer findings throughout ReactiveList, reactive views, extensions, benchmarks, and the sample application - introduce composed state ownership, sender-preserving notification relays, generic editable-list pool access, and cross-target compatibility helpers - preserve runtime behavior while replacing optional-parameter and construction-time escape patterns with explicit APIs Test and tooling changes: - update analyzer configuration and centralized analyzer packages - migrate rewritten test assertions to TUnit and replace reflection/timing-sensitive coverage with public behavioral synchronization - keep multi-target test compatibility across .NET Framework and modern Windows TFMs Validation: - Release and Debug solution builds complete with 0 warnings and 0 errors - Microsoft Testing Platform runs 2,966 tests with 0 failures and 0 skips - staged diff passes whitespace integrity checks
ChrisPulman
marked this pull request as ready for review
July 27, 2026 23:40
CI fix: - add repository Git attributes for C# and build configuration files - prevent Windows checkout conversion from rewriting analyzer-sensitive sources to CRLF - keep StyleSharp SST1532 active instead of suppressing the line-ending rule Validation: - simulated a Windows checkout with core.autocrlf=true - confirmed every checked-out C# file contains zero CR bytes - staged diff passes git whitespace checks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What kind of change does this PR introduce?
A solution-wide analyzer and build-quality fix. It updates analyzer configuration and packages, resolves source diagnostics across the library, reactive views, benchmarks, sample application, and tests, and removes timing/reflection regressions exposed by the complete multi-target test matrix.
The main architectural fixes use composition for constructor-safe reactive state ownership, a sender-preserving notification relay, explicit forwarding overloads, serialization-safe lock initialization, cross-target compatibility helpers, and generic editable-list pool access.
What is the new behavior?
The complete solution builds in both Release and Debug with zero warnings and zero errors. Reactive view subscriptions are activated without publishing partially constructed facades, public notification sender identity is preserved, index and edit-wrapper behavior remains covered through public APIs, and asynchronous tests synchronize on actual notifications or the intended query rather than fixed delays.
No source-level warning suppressions were added to resolve the diagnostics.
What is the current behavior?
Before this change, the analyzer-enabled Release build produced 13,972 aggregate errors and 8 warnings across the multi-target solution. Analyzer cleanup also exposed test regressions involving erased generic index-key types, private edit-wrapper reflection, throttle completion expectations, empty-notification paths, and legacy-framework scheduler timing.
Checklist
Additional information
Validation completed locally:
dotnet build src\ReactiveList.slnx -c Release --no-restore --nologo -v:minimal: 0 warnings, 0 errorsdotnet build src\ReactiveList.slnx -c Debug --no-restore --nologo -v:minimal: 0 warnings, 0 errorsgit diff --check: cleanNETSDK1057is emitted only as the informational preview-SDK banner and is not counted as a build warning.