Skip to content

chore: seal non-inheritable model and converter classes (MODERN-005)#446

Merged
laurentiu021 merged 1 commit into
mainfrom
chore/seal-classes
May 20, 2026
Merged

chore: seal non-inheritable model and converter classes (MODERN-005)#446
laurentiu021 merged 1 commit into
mainfrom
chore/seal-classes

Conversation

@laurentiu021

@laurentiu021 laurentiu021 commented May 20, 2026

Copy link
Copy Markdown
Owner

Add sealed modifier to 24 classes that are not designed for inheritance:

Converters (5): OutputKindToBrushConverter, FlexibleBoolToVisibilityConverter, BoolToElevationBadgeBrushConverter, HexToBrushConverter, ProcessStatusToBrushConverter

Models (19): AppInstallEntry, AppPackage, BatteryInfo, BlockedApp, BrokenShortcut, CleanupCategory, DiskHealthReport, DiskUsageEntry, DuplicateFileGroup, DuplicateFileEntry, FriendlyEventEntry, HealthDiagnostic, InstalledApp, PerformanceProfile, PingTarget, ProcessEntry, ServiceEntry, StartupEntry, TracerouteHop, WindowsFeature

Sealing prevents unintended inheritance and enables JIT devirtualization optimizations.

Build: 0 errors (main + tests).

Summary by CodeRabbit

  • Refactor
    • Reduced extensibility of several internal types to improve stability and maintainability; no changes to functionality or user-visible behavior.

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 20, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f6bbbc5c-8fc3-4905-9f1c-ff2561f82e8e

📥 Commits

Reviewing files that changed from the base of the PR and between c7043465d595528d545297b60bf34bd9f883f3fe and a6674cc.

📒 Files selected for processing (20)
  • SysManager/SysManager/Helpers/OutputKindToBrushConverter.cs
  • SysManager/SysManager/Models/AppInstallEntry.cs
  • SysManager/SysManager/Models/AppPackage.cs
  • SysManager/SysManager/Models/BatteryInfo.cs
  • SysManager/SysManager/Models/BlockedApp.cs
  • SysManager/SysManager/Models/BrokenShortcut.cs
  • SysManager/SysManager/Models/CleanupCategory.cs
  • SysManager/SysManager/Models/DiskHealthReport.cs
  • SysManager/SysManager/Models/DiskUsageEntry.cs
  • SysManager/SysManager/Models/DuplicateFileGroup.cs
  • SysManager/SysManager/Models/FriendlyEventEntry.cs
  • SysManager/SysManager/Models/HealthDiagnostic.cs
  • SysManager/SysManager/Models/InstalledApp.cs
  • SysManager/SysManager/Models/PerformanceProfile.cs
  • SysManager/SysManager/Models/PingTarget.cs
  • SysManager/SysManager/Models/ProcessEntry.cs
  • SysManager/SysManager/Models/ServiceEntry.cs
  • SysManager/SysManager/Models/StartupEntry.cs
  • SysManager/SysManager/Models/TracerouteHop.cs
  • SysManager/SysManager/Models/WindowsFeature.cs
✅ Files skipped from review due to trivial changes (3)
  • SysManager/SysManager/Models/AppInstallEntry.cs
  • SysManager/SysManager/Models/BrokenShortcut.cs
  • SysManager/SysManager/Helpers/OutputKindToBrushConverter.cs
📜 Recent review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build & unit tests
  • GitHub Check: Analyze (csharp)
🔇 Additional comments (17)
SysManager/SysManager/Models/AppPackage.cs (1)

9-9: LGTM!

SysManager/SysManager/Models/BatteryInfo.cs (1)

12-12: LGTM!

SysManager/SysManager/Models/BlockedApp.cs (1)

12-12: LGTM!

SysManager/SysManager/Models/CleanupCategory.cs (1)

13-13: LGTM!

SysManager/SysManager/Models/DiskHealthReport.cs (1)

14-14: LGTM!

SysManager/SysManager/Models/DiskUsageEntry.cs (1)

13-13: LGTM!

SysManager/SysManager/Models/DuplicateFileGroup.cs (1)

14-14: LGTM!

Also applies to: 32-32

SysManager/SysManager/Models/FriendlyEventEntry.cs (1)

14-14: LGTM!

SysManager/SysManager/Models/HealthDiagnostic.cs (1)

24-24: LGTM!

SysManager/SysManager/Models/InstalledApp.cs (1)

13-13: LGTM!

SysManager/SysManager/Models/PerformanceProfile.cs (1)

14-14: LGTM!

SysManager/SysManager/Models/PingTarget.cs (1)

14-14: LGTM!

SysManager/SysManager/Models/ProcessEntry.cs (1)

13-13: LGTM!

SysManager/SysManager/Models/ServiceEntry.cs (1)

12-12: LGTM!

SysManager/SysManager/Models/StartupEntry.cs (1)

15-15: LGTM!

SysManager/SysManager/Models/TracerouteHop.cs (1)

13-13: LGTM!

SysManager/SysManager/Models/WindowsFeature.cs (1)

12-12: LGTM!


📝 Walkthrough

Walkthrough

This PR marks 25 public classes as sealed (five WPF converters and twenty ObservableObject model classes). No logic, members, or behavior changed.

Changes

Class Inheritance Prevention

Layer / File(s) Summary
WPF converter classes sealed
SysManager/SysManager/Helpers/OutputKindToBrushConverter.cs
Five converter classes—OutputKindToBrushConverter, FlexibleBoolToVisibilityConverter, BoolToElevationBadgeBrushConverter, HexToBrushConverter, and ProcessStatusToBrushConverter—are marked sealed.
Observable model classes sealed
SysManager/SysManager/Models/AppInstallEntry.cs, SysManager/SysManager/Models/AppPackage.cs, SysManager/SysManager/Models/BatteryInfo.cs, SysManager/SysManager/Models/BlockedApp.cs, SysManager/SysManager/Models/BrokenShortcut.cs, SysManager/SysManager/Models/CleanupCategory.cs, SysManager/SysManager/Models/DiskHealthReport.cs, SysManager/SysManager/Models/DiskUsageEntry.cs, SysManager/SysManager/Models/DuplicateFileGroup.cs, SysManager/SysManager/Models/FriendlyEventEntry.cs, SysManager/SysManager/Models/HealthDiagnostic.cs, SysManager/SysManager/Models/InstalledApp.cs, SysManager/SysManager/Models/PerformanceProfile.cs, SysManager/SysManager/Models/PingTarget.cs, SysManager/SysManager/Models/ProcessEntry.cs, SysManager/SysManager/Models/ServiceEntry.cs, SysManager/SysManager/Models/StartupEntry.cs, SysManager/SysManager/Models/TracerouteHop.cs, SysManager/SysManager/Models/WindowsFeature.cs
Twenty model classes inheriting from ObservableObject are marked sealed (often sealed partial), preventing external subclassing while preserving partial-class and observable behavior.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

A rabbit seals the classy trail,
No more subclasses chase the gale.
Twenty models snug and tight,
Five converters locked just right.
🐇🔒

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically summarizes the main change: sealing 24 non-inheritable model and converter classes for optimization and correctness.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/seal-classes

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

@laurentiu021
laurentiu021 merged commit 77a42f1 into main May 20, 2026
5 checks passed
@laurentiu021
laurentiu021 deleted the chore/seal-classes branch May 20, 2026 06:41
laurentiu021 added a commit that referenced this pull request May 22, 2026
…446)

Co-authored-by: laurentiu021 <laurentiu021@users.noreply.github.com>
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.

1 participant