Skip to content

feat: support ReactiveUI 24 and updated analyzers - #470

Open
ChrisPulman wants to merge 2 commits into
mainfrom
CP_reactiveui-v24-compatibility
Open

feat: support ReactiveUI 24 and updated analyzers#470
ChrisPulman wants to merge 2 commits into
mainfrom
CP_reactiveui-v24-compatibility

Conversation

@ChrisPulman

@ChrisPulman ChrisPulman commented Jul 29, 2026

Copy link
Copy Markdown
Member

What kind of change does this PR introduce?

Feature and maintenance update that adds ReactiveUI 24 package-profile compatibility and remediates diagnostics from the StyleSharp, PerformanceSharp, and SecuritySharp 3.40 analyzer update.

Closes #469

What is the new behavior?

The generators detect ReactiveUI 23 legacy, ReactiveUI 24 base/Primitives, and ReactiveUI 24 Reactive profiles, emit the matching APIs, and use lifecycle-safe serialized disposable composition for generated WinForms hosts. The full solution is analyzer-clean.

What is the current behavior?

The previous implementation targets the legacy ReactiveUI surface, relies on System.Reactive-specific command output, and reports analyzer errors and warnings after the analyzer package update. Host composition also has disposal and terminal-state edge cases.

Checklist

  • Tests have been added or updated (for bug fixes / features)
  • Docs have been added or updated (for bug fixes / features)
  • Changes target the main branch
  • PR title follows Conventional Commits

Additional information

  • Release solution build: 0 warnings, 0 errors.
  • TUnit / Microsoft.Testing.Platform: 302 tests passed on each of net8.0, net9.0, and net10.0 (906 framework-specific executions).
  • Coverage: 63.32% line, 62.16% branch.
  • Analyzer diagnostics were remediated in code; no suppression changes were used to resolve build findings.

ReactiveUI compatibility:
- detect legacy, Primitives-based, and reactive package profiles
- generate RxVoid-based commands for the ReactiveUI 24 API surface
- make generated WinForms hosts lifecycle-safe, serialized, and terminal-aware
- preserve routed-host default content during view resolution

Analyzer migration:
- adopt StyleSharp, PerformanceSharp, and SecuritySharp 3.40
- remediate compiler and analyzer diagnostics across generators, code fixes, tests, and samples
- remove the legacy StyleCop configuration

Validation:
- add TUnit coverage for ReactiveUI package profiles and generated host behavior
- update verified generator output and application samples
- build the complete Release solution with zero warnings and errors
Copilot AI review requested due to automatic review settings July 29, 2026 00:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@ChrisPulman
ChrisPulman marked this pull request as ready for review July 29, 2026 01:00
Line endings:
- enforce LF checkout for C# sources so SST1532 passes on Windows runners

Cross-platform tests:
- add a cached platform-neutral metadata-reference set
- compile generated WinForms hosts against deterministic desktop stubs on every OS
- model the control collection, docking, layout, and disposal APIs used by generated output

Validation:
- clean Release solution build succeeds with zero warnings and errors
- all 906 TUnit executions pass with coverage enabled
Copilot AI review requested due to automatic review settings July 29, 2026 01:15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 62.73292% with 480 lines in your changes missing coverage. Please review.
✅ Project coverage is 77.79%. Comparing base (6fd596d) to head (f926573).

Files with missing lines Patch % Lines
...ators.Roslyn/IViewFor/IViewForGenerator.Execute.cs 50.66% 64 Missing and 10 partials ⚠️
...s.Roslyn/Core/Helpers/TypedConstantInfo.Factory.cs 6.66% 52 Missing and 4 partials ⚠️
...ators.Analyzers.CodeFixes/Core/Helpers/HashCode.cs 0.00% 45 Missing ⚠️
...ableAsPropertyGenerator{FromObservable}.Execute.cs 77.85% 14 Missing and 19 partials ⚠️
...enerators.Roslyn/Core/Helpers/TypedConstantInfo.cs 6.25% 30 Missing ⚠️
...rators.Roslyn/Core/Extensions/ISymbolExtensions.cs 52.27% 14 Missing and 7 partials ⚠️
...rators.Roslyn/Core/Extensions/ContextExtensions.cs 77.38% 11 Missing and 8 partials ⚠️
...I.SourceGenerators.Roslyn/Core/Helpers/HashCode.cs 32.14% 16 Missing and 3 partials ⚠️
...tics/CodeFixers/PropertyToReactiveFieldAnalyzer.cs 70.49% 12 Missing and 6 partials ⚠️
....Roslyn/Core/Extensions/AttributeDataExtensions.cs 70.49% 11 Missing and 7 partials ⚠️
... and 33 more
Additional details and impacted files
@@             Coverage Diff             @@
##             main     #470       +/-   ##
===========================================
+ Coverage   62.16%   77.79%   +15.63%     
===========================================
  Files          75       78        +3     
  Lines        4105     5072      +967     
  Branches      572      630       +58     
===========================================
+ Hits         2552     3946     +1394     
+ Misses       1385      920      -465     
- Partials      168      206       +38     

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Add support for both ReactiveUI 24 API profiles

2 participants