Skip to content
CAI
Software that uses CAICheck a score

KlausLoeffelmann/MvvmForms

70.8

Strong · 1 October 2026

39.6k

lines of production code

VB.NET

with C#

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This repository is a legacy .NET codebase, originally structured around a CLI container for MVVM Forms demonstrations, that has evolved primarily through extensive dependency management and maintenance. The system's recent trajectory is defined by a massive, ongoing refactoring effort within the 'src/dev' directory, involving hundreds of commits and fixes to existing behavior. It currently functions as a maintenance-heavy project focused on stabilizing and modernizing its internal development sources rather than introducing new features.

Architecture

  • Container: MvvmFormsCSharpDemos (cli)

How it got here

2015 — Sample project addition and removal

2 changes.

This brief period involved the creation and immediate deletion of the WindowsApplication1 sample project. The work consisted of an initial release followed by its removal, indicating a short-lived experiment or cleanup of sample code.

2018 — 116 commits updating dependencies (110 manifests)

1 change.

A dependency / build maintenance change in (dependencies) — 116 commits (7 fixs), 110 files.

June 2026 — 215 commits (47 fixes) modifying src/dev

1 change.

A change to existing behaviour in src/dev — 215 commits (47 fixs), 1513 files.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 73 → 71 (-2.3)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 62 → 58 (-4.7)
  • Architecture 96 → 97 (+1.5)
  • Maturity 75 → 76 (+0.4)
  • Readiness 84 → 82 (-1.8)
  • Security 100 → 100 (+0.0)

Resolved (5)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • The parameter 'Formular' (German for Formula) is used in a context where the type and other members use the English term 'Formula' (e.g., FormulaEvaluator, FormulaEvaluatorFunction). This mixes German and English vocabulary for the same concept.
  • The parameter 'Straße' (German for Street) is used alongside properties named 'Street' (English). This mixes German and English vocabulary for the same domain concept.
  • redundant comment (src/dev/MvvmFormsCSharpDemos/DemoData/DemoData.cs)

New (51)

  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator (RC-Ver)/Converter/StringNotEmptyToBooleanConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator (RC-Ver)/Converter/StringNotEmptyToBooleanConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator (RC-Ver)/Converter/StringNotEmptyToBrushConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator (RC-Ver)/Converter/StringNotEmptyToBrushConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator/Converter/StringNotEmptyToBooleanConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator/Converter/StringNotEmptyToBooleanConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator/Converter/StringNotEmptyToBrushConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator/Converter/StringNotEmptyToBrushConverter.cs)
  • CommentedOutCode (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator/FunctionPlotter/FunctionPlotterRenderer.xaml.cs)
  • Duplicated block (20–21 lines × 2) (src/dev/MvvmFormsAnalyzer/MvvmFormsAnalyzer/CodeFixProviders/CodeFixProvider.vb)
  • Duplicated block (22 lines × 2) (src/dev/WinForms.MvvmServiceLocatorBase/UI/WinFormsMvvmMessageBox.vb)
  • Duplicated block (23–24 lines × 2) (src/dev/Samples/MvvmCalculator/ModernMvvmCalculator (RC-Ver)/App.xaml.cs)
  • EmptyCatchBlock (src/dev/Samples/MvvmCalculator/MvvmCalculator/FunctionPlotter/FunctionPlotterRenderer.cs)
  • EmptyCatchBlock (src/dev/Samples/MvvmCalculator/MvvmCalculatorVMLib/FunctionPlotterViewModel.vb)
  • HackComment (src/dev/Samples/MeterReaderMvvmForms/MRViewModelLibrary/ViewModels/BuildingViewModel.vb)
  • Inconsistent casing for the postal code concept: 'ZIP' is fully uppercase, whereas other location properties like 'City' and 'Street' follow PascalCase. While 'ZIP' is a common acronym, the inconsistency with the casing style of other similar properties in the same namespace is notable.
  • Inconsistent language usage for address components: 'Straße' (German for Street) and 'Plz' (German for Postal Code) are used as parameter names, while other address-related parameters in the same codebase use English terms (e.g., 'City', 'Street', 'Zip' implied by context of 'MvvmFormsCSharpDemos.Contact.ZIP').
  • InvertedNullGuard (src/dev/WinForms.MvvmServiceLocatorBase/UI/WinFormsMvvmPageNavigator.vb)
  • Low cohesion: BindableBase (LCOM4 4) (src/dev/Legacy.EFLViewModelBase/BaseClasses/BindableBase.vb)
  • Low cohesion: MvvmViewModelBase (LCOM4 4) (src/dev/Legacy.EFLViewModelBase/MvvmViewModelClasses/MvvmViewModelBase.vb)
  • …and 31 more

Architecture

  • Unchanged — 1 containers · 0 contexts · 0 edges

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

KlausLoeffelmann/MvvmForms was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 1b4c8ef7107946d1de0a7898bdaf2398d6c4e3ad — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.