AI Slop Code RIsk Monitor

reactiveui/ReactiveUI

A composable, cross-platform MVVM framework for .NET inspired by functional reactive programming. It moves mutable state out of the user interface, keeps each feature's logic in one readable place, and makes applications easier to test. Supports WPF, WinForms, WinUI, .NET MAUI, Avalonia, Uno Platform, Blazor and Android.

5.8 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for reactiveui/ReactiveUI, a C# project with 8,537 GitHub stars. SynthScan examined 155,450 lines of code across 1624 source files, recording 818 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 5.8 (Moderate pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

5.8
Adjusted Signal
5.8
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
8.5K
Stars
C#
Language
155.4K
Lines of Code
1.6K
Files
818
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 23.2/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 810 finding(s).

Hallucinated Dependency & Supply Chain Risk 2.5/100 · LOW

Are imports declared and package/API names verified? 8 finding(s).

Agent Over-Engineering Ratio 0.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 2 finding(s).

PR Review Velocity Impact 25.3/100 · MEDIUM

Which changes need focused human review? 818 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 8HIGH 2MEDIUM 3LOW 805

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 818 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block800 hits · 791 pts
SeverityFileLineSnippetContext
LOW.github/workflows/sonarcloud.yml21 testProjects: |COMMENT
LOW.github/workflows/sonarcloud.yml41 # genuinely measures it.COMMENT
LOW.github/workflows/sonarcloud.yml61 # uikit-common,mac} each implement IReactiveObject, IReactiveNotifyPropertyChanged<T>,COMMENT
LOWsrc/ReactiveUI.Testing/TestSequencer.cs21COMMENT
LOWsrc/ReactiveUI.Testing/IBuilderExtensions.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Testing/SchedulerExtensions.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Testing/SchedulerExtensions.cs41 /// <summary>Provides testing extension members for schedulers.</summary>COMMENT
LOWsrc/ReactiveUI.Testing/MessageBusExtensions.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…ReactiveUI.Testing.Reactive/TestSchedulerExtensions.cs21 /// <param name="span">Timespan to convert.</param>COMMENT
LOW…ReactiveUI.Testing.Reactive/TestSchedulerExtensions.cs41 /// <summary>COMMENT
LOWsrc/ReactiveUI.Winforms/ContentControlBindingHook.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Winforms/ViewModelControlHostUnsafe.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…c/ReactiveUI.Winforms/ReactiveUserControlNonGeneric.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Winforms/ViewModelViewHost.Designer.cs1//------------------------------------------------------------------------------COMMENT
LOWsrc/ReactiveUI.Winforms/ReactiveUserControl.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Winforms/ReactiveUserControl.Designer.cs1#if REACTIVE_SHIMCOMMENT
LOW…eUI.Winforms/ReactiveUserControlNonGeneric.Designer.cs1#if REACTIVE_SHIMCOMMENT
LOWsrc/ReactiveUI.Winforms/RoutedViewHost.Designer.cs1#if REACTIVE_SHIMCOMMENT
LOWsrc/ReactiveUI.Winforms/RoutedControlHostUnsafe.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/UnhandledErrorException.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…iveUI.Core/Registration/DependencyResolverRegistrar.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…/ReactiveProperty/SingletonPropertyChangedEventArgs.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…eactiveProperty/SingletonDataErrorsChangedEventArgs.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/Internal/StartWithObservable.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/Internal/TaskObservable.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/ReactiveObject/IExtensionState.cs21COMMENT
LOWsrc/ReactiveUI.Core/ReactiveObject/IReactiveObject.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/ChangeSets/CollectionChanged.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/ChangeSets/ReactiveChangeSet{T}.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/ChangeSets/ChangeSetExtensions.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/ChangeSets/ChangeSetExtensions.cs41 {COMMENT
LOWsrc/ReactiveUI.Core/ChangeSets/ReactiveChangeReason.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/ChangeSets/ReactiveChange.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/Routing/NotAWeakReference.cs21 /// <summary>COMMENT
LOWsrc/ReactiveUI.Core/ReactiveCommand/IReactiveCommand.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/ReactiveCommand/IReactiveCommand.cs21 /// This observable can be particularly useful for updating UI, such as showing an activity indicator whilst a commaCOMMENT
LOW…re/ReactiveCommand/IReactiveCommand{TParam,TResult}.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…re/ReactiveCommand/IReactiveCommand{TParam,TResult}.cs21/// <para>COMMENT
LOW…re/ReactiveCommand/IReactiveCommand{TParam,TResult}.cs41 /// the execution logic.COMMENT
LOW…re/ReactiveCommand/IReactiveCommand{TParam,TResult}.cs61 /// encapsulated by the command. It is worth restating that the returned observable is lazy. Nothing willCOMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer.cs21 /// OrderBy or OrderByDescending methods on the builder to get an actual comparer.COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer.cs41 [MethodImpl(MethodImplOptions.AggressiveInlining)]COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer.cs61 /// <typeparam name="TValue">The type of the key returned by the selector function.</typeparam>COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer.cs81 /// <summary>Creates a comparer that orders elements in descending order according to a specified key selector.<COMMENT
LOWsrc/ReactiveUI.Core/Comparers/IComparerBuilder.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/Comparers/IComparerBuilder.cs21 /// </param>COMMENT
LOWsrc/ReactiveUI.Core/Comparers/IComparerBuilder.cs41 IComparer<T> OrderBy<TValue>(Func<T, TValue> selector, IComparer<TValue> comparer);COMMENT
LOWsrc/ReactiveUI.Core/Comparers/IComparerBuilder.cs61 /// comparer is specified.COMMENT
LOW…eactiveUI.Core/Comparers/ComparerChainingExtensions.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…eactiveUI.Core/Comparers/ComparerChainingExtensions.cs21 /// Creates a derived comparer based on the given parent comparer. The returned comparer will sort elementsCOMMENT
LOW…eactiveUI.Core/Comparers/ComparerChainingExtensions.cs41 /// </summary>COMMENT
LOW…eactiveUI.Core/Comparers/ComparerChainingExtensions.cs61 /// </summary>COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer{T}.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer{T}.cs21 /// </param>COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer{T}.cs41 [MethodImpl(MethodImplOptions.AggressiveInlining)]COMMENT
LOWsrc/ReactiveUI.Core/Comparers/OrderedComparer{T}.cs61 /// return type of the selector if no comparer is specified.COMMENT
LOWsrc/ReactiveUI.Core/Comparers/ChainedComparer.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…UI.Core/Interfaces/ReactivePropertyChangedEventArgs.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
LOW…I.Core/Interfaces/IReactivePropertyChangedEventArgs.cs1// Copyright (c) 2009-2026 .NET Foundation and Contributors. All rights reserved.COMMENT
740 more matches not shown…
Hallucination Indicators8 hits · 80 pts
SeverityFileLineSnippetContext
CRITICAL…ive/PublicAPI/net8.0-windows10.0.19041.0/PublicAPI.txt74 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
CRITICAL…ive/PublicAPI/net8.0-windows10.0.19041.0/PublicAPI.txt90 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
CRITICAL…ve/PublicAPI/net10.0-windows10.0.19041.0/PublicAPI.txt74 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
CRITICAL…ve/PublicAPI/net10.0-windows10.0.19041.0/PublicAPI.txt90 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
CRITICAL…ive/PublicAPI/net9.0-windows10.0.19041.0/PublicAPI.txt74 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
CRITICAL…ive/PublicAPI/net9.0-windows10.0.19041.0/PublicAPI.txt90 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
CRITICAL…ve/PublicAPI/net11.0-windows10.0.19041.0/PublicAPI.txt74 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
CRITICAL…ve/PublicAPI/net11.0-windows10.0.19041.0/PublicAPI.txt90 void ReactiveUI.Reactive.Maui.Internal.IMauiRoutedViewHost.SetObservedViewContract(string? contract) { }CODE
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHsrc/ReactiveUI.Winforms/ViewModelViewHost.Designer.cs3// This code was generated by a tool.COMMENT
HIGH…ests/ReactiveUI.Tests/Properties/Resources.Designer.cs3// This code was generated by a tool.COMMENT
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/ReactiveUI/Platforms/mac/AutoSuspendHelper.cs28/// Example usage:COMMENT
LOWsrc/ReactiveUI/Platforms/android/AutoSuspendHelper.cs25/// Example usage:COMMENT
LOWsrc/ReactiveUI.Wpf.Shared/AutoSuspendHelper.cs24/// Example usage:COMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/sonarcloud.yml57 # per-arity shape: after the shared scaffold is factored out, the residual is one typedCOMMENT
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM…activeUI.Shared/ReactiveCommand/ReactiveCommandBase.cs56/// As discussed above, you are under no obligation to somehow incorporate this into your <c>canExecute</c> observableCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM…c/ReactiveUI.Wpf.Shared/TransitioningContentControl.cs633 // Do some special handling of particular transitions so that we get nice smooth transitions that utilize the siCOMMENT
Hyper-Verbose Identifiers2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…BlazorServer/Components/Layout/ReconnectModal.razor.js11function handleReconnectStateChanged(event) {CODE
LOW…BlazorServer/Components/Layout/ReconnectModal.razor.js59async function retryWhenDocumentBecomesVisible() {CODE