The surveyor sits above your scanners — not beside them.
Watchdog isn't another line-level scanner competing for the same slot. It's an independent survey one altitude up: it reads your whole product and issues a single, reproducible Codebase Assurance Index (CAI) your engineers, your agents, and your auditor can act on. Keep every tool you already run — Watchdog answers the question none of them do.
C#/.NET · a measurement, not an opinion.
-
Not a CI scanner or linterNever scores a line or blocks a merge.
-
Not a SAST / dataflow engineReads their signal; doesn't out-depth one.
-
Not a coding agentNever edits, commits, pushes or opens a PR.
-
Not a certifierRecords the evidence; a named human signs.
-
An independent surveyorOne altitude above your scanners.
-
One reproducible CAISigned, commit-pinned — re-runs to the same number.
-
A read-only oracleServes every finding to your agent over MCP.
-
A whole-system surveyArchitecture, maturity, compliance & risk in one report.
Specialists hold the line. The surveyor judges the system.
The tools you already run are specialists — each owns one column of concern, down at the line or the file, and that's exactly what they should do. Climb to the module, the system, the whole portfolio and the job changes: it becomes synthesis. Is the architecture sound? Is it maturing? Can you prove it's compliant? That's the altitude Watchdog was built for.
Read it as altitude and job, not a ranking — not a scoreboard.
Because it spans that whole height, one measurement is read at every altitude: a board sees a single CAI, an architect sees the failing lens, an engineer — or their coding agent — gets the exact file, line and fix. The scanners each stop at one floor; the survey is the shaft that connects them.
It earns the upper floors by synthesis — architecture, maturity and compliance folded into one reproducible number. And it's honest about the bottom one: at the line and the pull request it defers to the specialists. It reads their output and places it in the system picture; it never replaces a deep SAST engine or your live IDE lint.
Four things — the first is the one no scanner can claim.
Same code in, same CAI out under the same rubric and advisory data — re-run the survey and the number holds. That's what makes a trend real, a contract floor you can set and verify at each scheduled scan, and a compliance number an auditor can rely on. How the rubric works →
Conditional lenses for DDD, event-driven and event-sourced designs, ADR conformance, and a maturity ladder. Watchdog surveys what the code is trying to be — not just what it literally says.
Every repo you ship together — down to the services inside a monorepo — rolls up into one CAI, with each repo's compliance declaration bundled in. Not a pile of disconnected per-repo reports.
Watchdog never edits your code and never certifies you — it assembles the evidence; a human signs. The measurer never sits at the table. Our neutrality →
Same repos. Two scopes of view.
A scanner reviews one repo, or one pull request. Watchdog reviews the product — every repo you ship as a unit, decomposing a monorepo into a CAI per deployable service: each service scored by the same lenses as the whole product, then rolled up into one whole-product survey, with each repo's compliance declaration bundled in.
Every other tool here is scoped to a repo or a diff. Watchdog is scoped to the thing you actually ship.
SIG & Watchdog — the same kind of verdict.
The Software Improvement Group pioneered the independent, board-grade software survey — a benchmarked model delivered through a consulting engagement, and it's excellent. Watchdog issues the same kind of independent verdict by a different mechanism: a deterministic, reproducible rubric you run yourself — continuously, the same day you ask, from a single team to a whole portfolio. Same altitude; self-serve where SIG is high-touch.
The real alternatives — and why the survey beats each.
When a team or a buyer skips Watchdog, it isn't for another scanner — it's for one of these. So this is what the survey is actually measured against.
SonarQube + a tech lead's judgement + a spreadsheet. It works — until the tech lead leaves or the spreadsheet is the only place the verdict lives. Watchdog is that exact stack, made reproducible, independent and signable — the rubric outlives the person.
A consultancy reads the code for a fortnight and writes a verdict. Watchdog issues the same kind of verdict deterministically, the day you ask — and re-issues it every scan instead of once, so the trend is real.
The M&A equivalent: excellent, billed per engagement, frozen the day they stop reading. Watchdog gives a CAI comparable from LOI to close, re-derivable by your own advisors from the code itself. For acquirers →
Your scanners are instruments. Watchdog is the survey.
A surveyor doesn't compete with the moisture meter — it reads the instruments and writes the report a buyer can act on. Your scanners live one altitude below the survey and feed it: Watchdog reads the same signals, adds architecture, domain-intent and git-history dimensions of its own, and rolls them into one reproducible CAI. Keep every one of them — none is a competitor, and none is a peer. The only thing that does Watchdog's job is another independent assurance body, like SIG above.
They hold the line. Watchdog judges the system — the only thing on this page doing that job.
| If you need… | Reach for… | Watchdog's role |
|---|---|---|
| Block a bad line before it merges | SonarQube / Coverity (IDE & CI) | reads their signal, scores it into the system verdict |
| Drive a dependency graph by hand | NDepend | folds an IL-bloat signal into a reproducible CAI |
| The deepest behavioural / social analysis | CodeScene | its own hotspots + bus-factor, scored, served to any agent |
| The deepest SCA / fix-PRs | Snyk | NuGet + npm SCA + a CycloneDX SBOM every scan, mapped to NIS2 / DORA |
| An independent, board-grade verdict | SIG (consulting) or Watchdog (self-serve) | the same job, run on demand |
| To replace the spreadsheet, a manual audit, or tech-DD | Watchdog | that is the job |
Keep every tool above — none is a rival. The bottom row is the one Watchdog owns; the deep-dives below show how each instrument feeds the survey.
SonarQube + Watchdog
- breadth across 30+ languages
- thousands of line rules + dataflow SAST
- a live IDE gate that blocks bad merges
- architecture & maturity, scored into the CAI deterministically
- one portfolio roll-up, not per-repo noise
- signed compliance + agent-actionable tasks
Better together: SonarQube keeps every line clean across the codebase; Watchdog tells you whether the system those lines add up to is sound, compliant, and shippable — and emits a changelog every scan (CAI & per-lens deltas, findings resolved/raised, features by area, API endpoints added/removed) for your retro and your audit. It never re-scans the line — it works one altitude up.
NDepend + Watchdog
- deep dependency graphs & matrices
- custom CQLinq rules, IL-level metrics
- hands-on architecture inspection in Visual Studio
- its own IL-level read — emitted-IL method bloat (Mono.Cecil), scored into the CAI
- a C4 architecture map coloured by health, boundary violations drawn in red — for bounded-context systems
- domain-intent lenses + a maturity ladder; a reproducible CAI across the portfolio + an agent loop
An instrument, not a peer. Both are .NET and both read the emitted IL — but NDepend is the microscope an engineer drives by hand, while Watchdog folds an IL-bloat signal into a scored, reproducible survey across the whole product. Drill in with NDepend; trend and attest with Watchdog.
CodeScene + Watchdog
- the deepest behavioural & social analysis
- prioritise work by where you actually edit
- ACE auto-refactoring
- its own hotspots, change-coupling & bus-factor — folded into the score
- architecture-intent lenses + a deterministic CAI you can gate on
- every finding served to your own coding agent over MCP — the next scan proves it landed
- contract profiles + signed compliance
Better together: we share the behavioural read — Watchdog mines hotspots, change-coupling and bus-factor from your git history and folds them into the survey; CodeScene goes deeper on social analysis. On remediation the split is open vs closed: CodeScene fixes inside its own ACE engine, while Watchdog stays read-only and hands every finding to whatever agent you already run — then re-measures to prove the fix landed. CodeScene for day-to-day guidance; Watchdog for the contract-grade, reproducible number.
Snyk + Watchdog
- the deepest SCA database, broadest ecosystems
- container & registry scanning, automated fix-PRs
- continuous remediation as a daily workflow
- SCA for NuGet & npm — plus IaC, secrets, licences
- a CycloneDX SBOM, every survey
- all folded into one CAI, mapped to NIS2 / DORA
Better together: both scan dependencies — Watchdog covers NuGet & npm and emits a CycloneDX SBOM every survey; Snyk goes deeper and broader (Python, Go, containers, fix-PRs). Snyk for remediation depth; Watchdog for the standing, reproducible posture.
Coverity + Watchdog
- path-sensitive dataflow defect detection
- C/C++/Java breadth, safety-critical rigor
- MISRA / CERT compliance
- architecture & domain-intent lenses
- a deterministic system-level CAI
- security findings mapped to CWE
Better together: Coverity proves there's no defect on the path; Watchdog proves the subsystem is well-shaped, compliant, and shippable. Coverity speaks MISRA/CERT for C/C++; on .NET, Watchdog maps its security findings to the CWE taxonomy an auditor recognises — emitted in the SARIF so your code-scanning tools show it too.
CodeRabbit + Watchdog
- AI review of the PR diff, in the moment
- conversational, inline comments
- catches issues as they're written
- a survey of the whole codebase, on a cadence
- deterministic architecture & maturity
- compliance + portfolio roll-up + agent tasks
Better together: CodeRabbit catches problems as you write them; Watchdog tells you whether the accumulated system is healthy and your conventions are actually enforced. Different time, different altitude — zero collision.
Real findings, pulled live from published surveys — not a mock-up.
A line-scanner sees a clean file. Watchdog reads the system: domain types leaking across a bounded context, a consumer with no idempotency guard, a projection that assumes in-order delivery. Each card shows the highest-impact verbatim findings from a real published report — the differentiating ones first, with the exact file and line. Open the full survey for the complete list and how each was measured.
-
Domain Modelling
DM2
Primitive id on a domain type: Cart.CustomerId
eCommerce/DomainModelLayer/Carts/Cart.cs:22 -
Domain Modelling
DM2
Primitive id on a domain type: Customer.CountryId
eCommerce/DomainModelLayer/Customers/Customer.cs:24 -
Domain Modelling
DM1
Aggregate holds a reference to another aggregate: Product.Code
eCommerce/DomainModelLayer/Products/Product.cs:22 -
Domain Modelling
DM2
Primitive id on a domain type: Purchase.CustomerId
eCommerce/DomainModelLayer/Purchases/Purchase.cs:22
-
Architecture
D6
Low cohesion: Enumeration (LCOM4 4)
Src/DDD.Common/Domain/Enumeration.cs:12 -
Architecture
D6
Low cohesion: DomainEntity (LCOM4 4)
Src/DDD.Core/Domain/DomainEntity.cs:10 -
Architecture
D6
Low cohesion: Builder (LCOM4 4)
Src/DDD.Core/Infrastructure/DependencyInjection/AppRegistrationOptions.cs:61
-
Event-Driven
ED3
Event not named in past tense: OrderAddedEvent
Common/Common.Domain/Events/Orders/OrderAddedEvent.cs:1 -
Event-Driven
ED3
Event not named in past tense: ProductAddedEvent
Common/Common.Domain/Events/Products/ProductAddedEvent.cs:1 -
Domain Modelling
DM7
Repository for a non-root entity: IOrderQueryRepository → Order
OrderManagement/OrderManagement.Application/Orders/Queries/IOrderQueryRepository.cs:1 -
Domain Modelling
DM2
Primitive id on a domain type: Order.CustomerId
OrderManagement/OrderManagement.Domain/Models/Orders/Order.cs:17
-
Domain Modelling
DM4
Anemic entity: Aggregate
Core/Aggregates/Aggregate.cs:7 -
Domain Modelling
DM4
Anemic entity: MotionSensor
Sample/AsyncProjections/SmartHome.Temperature/MotionSensors/MotionSensor.cs:6 -
Domain Modelling
DM4
Anemic entity: TemperatureMeasurement
Sample/AsyncProjections/SmartHome.Temperature/TemperatureMeasurements/TemparatureMeasurement.cs:7 -
Domain Modelling
DM4
Anemic entity: ShoppingCart
Sample/ECommerce/Carts/Carts/ShoppingCarts/ShoppingCart.cs:13
-
Event-Driven
ED3
Event not named in past tense: BaseEvent
src/Shop.Core/SharedKernel/BaseEvent.cs:9 -
Domain Modelling
DM2
Primitive id on a domain type: BaseEvent.AggregateId
src/Shop.Core/SharedKernel/BaseEvent.cs:19 -
Event-Driven
ED3
Event not named in past tense: EventStore
src/Shop.Core/SharedKernel/EventStore.cs:8 -
Event-Driven
ED3
Event not named in past tense: CustomerBaseEvent
src/Shop.Domain/Entities/CustomerAggregate/Events/CustomerBaseEvent.cs:6
-
Event-Driven
ED3
Event not named in past tense: BaseEvent
src/Domain/Common/BaseEvent.cs:5
-
Domain Modelling
DM4
Anemic entity: AuditableEntity
src/BuildingBlocks/BookWorm.SharedKernel/SeedWork/AuditableEntity.cs:5 -
Domain Modelling
DM5
Mutable entity: AuditableEntity
src/BuildingBlocks/BookWorm.SharedKernel/SeedWork/AuditableEntity.cs:5 -
Event-Driven
ED3
Event not named in past tense: DomainEvent
src/BuildingBlocks/BookWorm.SharedKernel/SeedWork/DomainEvent.cs:6 -
Domain Modelling
DM5
Mutable entity: Entity
src/BuildingBlocks/BookWorm.SharedKernel/SeedWork/Entity.cs:8
-
Domain Modelling
DM4
Anemic entity: Customer
src/Equinox.Domain/Models/Customer.cs:6 -
Domain Modelling
DM7
Repository for a non-root entity: CustomerRepository → Customer
src/Equinox.Infra.Data/Repository/CustomerRepository.cs:12
-
Architecture
AX2
Stateful singleton: TokenRefreshService
src/Backoffice/Backoffice.Web/Auth/TokenRefreshService.cs:12 -
Architecture
AX2
Stateful singleton: BackofficeHubService
src/Backoffice/Backoffice.Web/Hub/BackofficeHubService.cs:16 -
Architecture
AX2
Stateful singleton: StubEmailProvider
src/Correspondence/Correspondence/Providers/StubEmailProvider.cs:7 -
Architecture
D6
Low cohesion: Order (LCOM4 4)
src/Orders/Orders/Placement/Order.cs:12
-
Event-Driven
ED3
Event not named in past tense: Event
Src/DDD.Domain.Core/Events/Event.cs:7 -
Event-Driven
ED3
Event not named in past tense: StoredEvent
Src/DDD.Domain.Core/Events/StoredEvent.cs:5 -
Event-Driven
ED3
Event not named in past tense: DomainNotification
Src/DDD.Domain.Core/Notifications/DomainNotification.cs:7 -
Architecture
AX6
Fat interface: ISpecification (18 members)
Src/DDD.Domain/Interfaces/ISpecification.cs:7
-
Architecture
AX2
Stateful singleton: MemoryCache
Framework/CQRSlite/Caching/MemoryCache.cs:11 -
Architecture
AX2
Stateful singleton: Router
Framework/CQRSlite/Routing/Router.cs:15 -
Architecture
D6
Low cohesion: InventoryItem (LCOM4 4)
Sample/CQRSCode/WriteModel/Domain/InventoryItem.cs:7 -
Architecture
AX2
Stateful singleton: InMemoryEventStore
Sample/CQRSCode/WriteModel/InMemoryEventStore.cs:10
-
Architecture
D6
Low cohesion: AbstractByteBuffer (LCOM4 5)
src/DotNetty.Buffers/AbstractByteBuffer.cs:23 -
Architecture
AX6
Fat interface: IByteBuffer (188 members)
src/DotNetty.Buffers/IByteBuffer.cs:22 -
Architecture
AX6
Fat interface: IByteBufferAllocator (18 members)
src/DotNetty.Buffers/IByteBufferAllocator.cs:9 -
Architecture
AX6
Fat interface: IPoolArenaMetric (46 members)
src/DotNetty.Buffers/IPoolArenaMetric.cs:8
-
Architecture
D6
Low cohesion: ApiExceptionFilterAttribute (LCOM4 5)
src/ExpenseTracker/ExpenseTracker.Api/Filters/ApiExceptionFilterAttribute.cs:8
-
Domain Modelling
DM2
Primitive id on a domain type: AggregateRoot.AggregateId
src/Core/EcommerceDDD.Core/Domain/AggregateRoot.cs:6 -
Domain Modelling
DM2
Primitive id on a domain type: CustomerRegistered.CustomerId
src/Services/EcommerceDDD.CustomerManagement/Domain/Events/CustomerRegistered.cs:4 -
Domain Modelling
DM2
Primitive id on a domain type: CustomerUpdated.CustomerId
src/Services/EcommerceDDD.CustomerManagement/Domain/Events/CustomerUpdated.cs:4 -
Domain Modelling
DM2
Primitive id on a domain type: StockQuantityDecreased.InventoryStockUnitId
src/Services/EcommerceDDD.InventoryManagement/Domain/Events/StockQuantityDecreased.cs:4
-
Domain Modelling
DM4
Anemic entity: AggregateBase
EventSourcingCQRS.Domain/Core/AggregateBase.cs:7 -
Domain Modelling
DM2
Primitive id on a domain type: DomainEventBase.EventId
EventSourcingCQRS.Domain/Core/DomainEventBase.cs:23 -
Architecture
D6
Low cohesion: TransientDomainEventPubSub (LCOM4 4)
EventSourcingCQRS.Application/PubSub/TransientDomainEventPubSub.cs:9
-
Event-Driven
ED3
Event not named in past tense: Event
Src/DDD.Domain.Core/Events/Event.cs:6 -
Event-Driven
ED3
Event not named in past tense: DomainNotification
Src/DDD.Domain.Core/Notifications/DomainNotification.cs:6 -
Architecture
AX6
Fat interface: ISpecification (18 members)
Src/DDD.Domain/Interfaces/ISpecification.cs:7 -
Architecture
D6
Low cohesion: BaseSpecification (LCOM4 6)
Src/DDD.Domain/Specifications/BaseSpecification.cs:8
-
Architecture
AX6
Fat interface: IAppDbContext (25 members)
Application/Common/Interfaces/IAppDbContext.cs:11 -
Architecture
AX6
Fat interface: IDynamicSetting (16 members)
Application/Common/Interfaces/IDynamicConfigurationService.cs:3 -
Architecture
AX7
Cross-slice coupling: Crypto → Fmp
Application/Features/Crypto/Services/CryptoDataOrchestrator.cs:12 -
Architecture
D6
Low cohesion: CryptoPayApiClient (LCOM4 5)
Infrastructure/ExternalServices/CryptoPayApiClient.cs:15
-
Domain Modelling
DM4
Anemic entity: AggregateRoot
src/BuildingBlocks/FinLedger.BuildingBlocks.Domain/Entity.cs:20 -
Domain Modelling
DM2
Primitive id on a domain type: AccountCreatedDomainEvent.AccountId
src/Modules/Ledger/FinLedger.Modules.Ledger.Domain/Accounts/Events/AccountCreatedDomainEvent.cs:5 -
Event-Driven
ED3
Event not named in past tense: AccountCreatedDomainEvent
src/Modules/Ledger/FinLedger.Modules.Ledger.Domain/Accounts/Events/AccountCreatedDomainEvent.cs:5 -
Domain Modelling
DM2
Primitive id on a domain type: AuditLog.UserId
src/Modules/Ledger/FinLedger.Modules.Ledger.Domain/Auditing/AuditLog.cs:8
-
Domain Modelling
DM4
Anemic entity: EurLexSumDocument
src/Modules/Law/Atlas.Law.Domain/Entities/EurLexSumDocumentEntity/EurLexSumDocument.cs:9 -
Domain Modelling
DM2
Primitive id on a domain type: EurLexSumDocument.CelexId
src/Modules/Law/Atlas.Law.Domain/Entities/EurLexSumDocumentEntity/EurLexSumDocument.cs:16 -
Domain Modelling
DM2
Primitive id on a domain type: LegalDocument.UserId
src/Modules/Law/Atlas.Law.Domain/Entities/LegalDocumentEntity/LegalDocument.cs:38 -
Domain Modelling
DM2
Primitive id on a domain type: LegalDocumentSummary.LegalDocumentId
src/Modules/Law/Atlas.Law.Domain/Entities/LegalDocumentSummaryEntity/LegalDocumentSummary.cs:32
-
Architecture
D6
Low cohesion: PaymentsController (LCOM4 4)
Microservices/ExternalAPIsMicroservice/Controllers/PaymentsController.cs:11 -
Architecture
AX6
Fat interface: IEstateSortingService (19 members)
Microservices/ListingsMicroservice/Services/_Sorting/IEstateSortingService.cs:5
-
Event-Driven
ED4
Dual write (no outbox): ArchiveClientHandler.Handle
src/ClientService/ClientService.Api/Features/Clients/Commands/ArchiveClient/ArchiveClientHandler.cs:25 -
Event-Driven
ED4
Dual write (no outbox): RestoreClientHandler.Handle
src/ClientService/ClientService.Api/Features/Clients/Commands/ArchiveClient/RestoreClientHandler.cs:25 -
Event-Driven
ED4
Dual write (no outbox): CreateClientHandler.Handle
src/ClientService/ClientService.Api/Features/Clients/Commands/CreateClient/CreateClientHandler.cs:25 -
Event-Driven
ED4
Dual write (no outbox): UpdateClientHandler.Handle
src/ClientService/ClientService.Api/Features/Clients/Commands/UpdateClient/UpdateClientHandler.cs:25
-
Domain Modelling
DM2
Primitive id on a domain type: DomainEvent.AggregateRootId
Common/Messaging/DomainEvent.cs:9 -
Architecture
D6
Low cohesion: DomainEvent (LCOM4 4)
Common/Messaging/DomainEvent.cs:7
-
Architecture
AX6
Fat interface: IAppDbContext (25 members)
Application/Common/Interfaces/IAppDbContext.cs:11 -
Architecture
AX6
Fat interface: IDynamicSetting (16 members)
Application/Common/Interfaces/IDynamicConfigurationService.cs:7 -
Architecture
AX7
Cross-slice coupling: Crypto → Fmp
Application/Features/Crypto/Services/CryptoDataOrchestrator.cs:12 -
Architecture
AX7
Cross-slice coupling: Forwarding → Fowarding
Domain/Features/Forwarding/Entities/ForwardingRule.cs:7
-
Domain Modelling
DM4
Anemic entity: AggregateRootBase
src/Club.BuildingBlocks/Domain/AggregateRootBase.cs:3 -
Domain Modelling
DM2
Primitive id on a domain type: ClubCreatedEvent.EventId
src/Club.Domain/ProfileAggregate/ClubCreatedEvent.cs:8
-
Architecture
AX7
Cross-slice coupling: DomainFeatures → Infrastructure
Source/Modules/Channels/Features/DomainFeatures/Channels/Application/Commands/AddMessageToChannel.cs:12 -
Architecture
AX7
Cross-slice coupling: DomainFeatures → Infrastructure
Source/Modules/Channels/Features/DomainFeatures/Channels/Application/Commands/ChangeChannelName.cs:12 -
Architecture
AX7
Cross-slice coupling: DomainFeatures → Infrastructure
Source/Modules/Channels/Features/DomainFeatures/Channels/Application/Commands/CreateChannel.cs:11 -
Architecture
AX7
Cross-slice coupling: DomainFeatures → Infrastructure
Source/Modules/Channels/Features/DomainFeatures/Channels/Application/Commands/DeleteMessageFromChannel.cs:12
-
Architecture
AX6
Fat interface: IApplicationDbContext (17 members)
src/Chrono/Infrastructure/Persistence/IApplicationDbContext.cs:7
-
Architecture
AX7
Cross-slice coupling: Transactions → UserWallet
src/DigitalWallet/Features/Transactions/Common/Transaction.cs:3 -
Architecture
AX7
Cross-slice coupling: Transactions → UserWallet
src/DigitalWallet/Features/Transactions/Common/TransactionService.cs:5 -
Architecture
AX7
Cross-slice coupling: UserWallet → MultiCurrency
src/DigitalWallet/Features/UserWallet/Common/Wallet.cs:3 -
Architecture
AX7
Cross-slice coupling: UserWallet → MultiCurrency
src/DigitalWallet/Features/UserWallet/Common/WalletService.cs:3
-
Domain Modelling
DM4
Anemic entity: Cargo
Source/EventFlow.Examples.Shipping/Domain/Model/CargoModel/Cargo.cs:28 -
Domain Modelling
DM4
Anemic entity: TransportLeg
Source/EventFlow.Examples.Shipping/Domain/Model/CargoModel/Entities/TransportLeg.cs:31 -
Domain Modelling
DM5
Mutable entity: Location
Source/EventFlow.Examples.Shipping/Domain/Model/LocationModel/Location.cs:27 -
Domain Modelling
DM4
Anemic entity: Location
Source/EventFlow.Examples.Shipping/Domain/Model/LocationModel/Location.cs:27
-
Architecture
AX6
Fat interface: IChangeset (27 members)
Source/Infrastructure/Changes/IChangeset.cs:13 -
Architecture
D6
Low cohesion: JsonSchema (LCOM4 6)
Source/Infrastructure/Schemas/JsonSchema.cs:14 -
Architecture
D6
Low cohesion: ExtensionDataDictionary (LCOM4 7)
Source/Infrastructure/Schemas/JsonSchema.cs:707 -
Architecture
AX6
Fat interface: IServices (44 members)
Source/Kernel/Contracts/IServices.cs:27
-
Domain Modelling
DM2
Primitive id on a domain type: AccountDeleted.AccountId
src/Contracts/Services/Account/DomainEvent.cs:8 -
Domain Modelling
DM2
Primitive id on a domain type: BillingAddressDeleted.AccountId
src/Contracts/Services/Account/DomainEvent.cs:10 -
Domain Modelling
DM2
Primitive id on a domain type: BillingAddressDeleted.AddressId
src/Contracts/Services/Account/DomainEvent.cs:10 -
Domain Modelling
DM2
Primitive id on a domain type: ShippingAddressDeleted.AccountId
src/Contracts/Services/Account/DomainEvent.cs:12
-
Architecture
D6
Low cohesion: AddEditSOTaskDocumentComponent (LCOM4 4)
RazorClassLibrary1/Pages/SO_TaskDocument/AddEditSOTaskDocumentComponent.razor.cs:14 -
Architecture
D6
Low cohesion: HttpClientServiceBase (LCOM4 4)
RazorClassLibrary1/Services/HttpClientServiceBase.cs:7
-
Event-Driven
ED4
Dual write (no outbox): CreateBookingCommandHandler.Handle
src/BookingMonolith/src/Booking/Bookings/Features/CreatingBook/V1/CreateBooking.cs:96 -
Event-Driven
ED3
Event not named in past tense: CreateAircraft
src/BookingMonolith/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs:22 -
Event-Driven
ED3
Event not named in past tense: CreateAircraftMongo
src/BookingMonolith/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraftMongo.cs:14 -
Event-Driven
ED3
Event not named in past tense: CreateAirport
src/BookingMonolith/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs:21
-
Event-Driven
ED3
Event not named in past tense: DomainNotificationBase
src/BuildingBlocks/Application/Events/DomainNotificationBase.cs:5 -
Domain Modelling
DM4
Anemic entity: Member
src/Modules/Administration/Domain/Members/Member.cs:6 -
Event-Driven
ED4
Dual write (no outbox): ProcessOutboxCommandHandler.Handle
src/Modules/Administration/Infrastructure/Configuration/Processing/Outbox/ProcessOutboxCommandHandler.cs:32 -
Domain Modelling
DM6
Domain uses infrastructure in a method body: MeetingGroupProposalEntityTypeConfiguration
src/Modules/Administration/Infrastructure/Domain/MeetingGroupProposals/MeetingGroupProposalEntityTypeConfiguration.cs:8
-
Architecture
D6
Low cohesion: Feature (LCOM4 6)
src/NServiceBus.Core/Features/Feature.cs:15 -
Architecture
AX6
Fat interface: ILog (25 members)
src/NServiceBus.Core/Logging/ILog.cs:10 -
Architecture
D6
Low cohesion: IncomingPipelineMetrics (LCOM4 10)
src/NServiceBus.Core/Pipeline/Incoming/IncomingPipelineMetrics.cs:12 -
Architecture
AX6
Fat interface: IRecoverabilityActionContext (22 members)
src/NServiceBus.Core/Recoverability/IRecoverabilityActionContext.cs:13
-
Event-Driven
ED4
Dual write (no outbox): CreateBookingCommandHandler.Handle
src/Modules/Booking/src/Booking/Features/CreatingBook/V1/CreateBooking.cs:97 -
Event-Driven
ED3
Event not named in past tense: CreateAircraft
src/Modules/Flight/src/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs:26 -
Event-Driven
ED3
Event not named in past tense: CreateAircraftMongo
src/Modules/Flight/src/Aircrafts/Features/CreatingAircraft/V1/CreateAircraftMongo.cs:18 -
Event-Driven
ED3
Event not named in past tense: CreateAirport
src/Modules/Flight/src/Airports/Features/CreatingAirport/V1/CreateAirport.cs:24
-
Event-Driven
ED4
Dual write (no outbox): CreateBookingCommandHandler.Handle
src/Services/Booking/src/Booking/Booking/Features/CreatingBook/V1/CreateBooking.cs:97 -
Event-Driven
ED3
Event not named in past tense: CreateAircraft
src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs:26 -
Event-Driven
ED3
Event not named in past tense: CreateAircraftMongo
src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraftMongo.cs:18 -
Event-Driven
ED3
Event not named in past tense: CreateAirport
src/Services/Flight/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs:24
-
Architecture
D6
Low cohesion: InstructionProvider (LCOM4 5)
src/Application/HydraScript.Application.CodeGeneration/Visitors/InstructionProvider.cs:17 -
Architecture
AX2
Stateful singleton: AmbiguousInvocationStorage
src/Application/HydraScript.Application.StaticAnalysis/Impl/AmbiguousInvocationStorage.cs:6 -
Architecture
AX2
Stateful singleton: MethodStorage
src/Application/HydraScript.Application.StaticAnalysis/Impl/MethodStorage.cs:7 -
Architecture
AX2
Stateful singleton: SymbolTableStorage
src/Application/HydraScript.Application.StaticAnalysis/Impl/SymbolTableStorage.cs:7
-
Domain Modelling
DM4
Anemic entity: AggregateRoot
src/VOEConsulting.Flame.Domain.Common/AggregateRoot.cs:3 -
Domain Modelling
DM2
Primitive id on a domain type: DomainEvent.AggregateId
src/VOEConsulting.Flame.Domain.Common/Events/DomainEvent.cs:7 -
Domain Modelling
DM2
Primitive id on a domain type: IDomainEvent.AggregateId
src/VOEConsulting.Flame.Domain.Common/Events/IDomainEvent.cs:12 -
Domain Modelling
DM2
Primitive id on a domain type: OrderCancelledEvent.OrderId
src/VOEConsulting.Flame.OrderManagement.Domain/Orders/Events/OrderCancelledEvent.cs:11
-
Architecture
AX6
Fat interface: IGatewayConnectionManager (16 members)
src/OpenClaw.Connection/IGatewayConnectionManager.cs:10 -
Architecture
D6
Low cohesion: PermissionsPage (LCOM4 8)
src/OpenClaw.SetupEngine.UI/Pages/PermissionsPage.xaml.cs:14 -
Architecture
D6
Low cohesion: SetupWindow (LCOM4 9)
src/OpenClaw.SetupEngine.UI/SetupWindow.xaml.cs:11 -
Architecture
D6
Low cohesion: ExecApprovalV2Result (LCOM4 10)
src/OpenClaw.Shared/ExecApprovals/ExecApprovalV2Result.cs:23
-
Domain Modelling
DM2
Primitive id on a domain type: DomainEvent.RootId
src/Framework/Domain/Domain.Common/DomainEvent.cs:30 -
Domain Modelling
DM2
Primitive id on a domain type: TombstoneDomainEvent.DeletedById
src/Framework/Domain/Domain.Common/TombstoneDomainEvent.cs:29 -
Domain Modelling
DM2
Primitive id on a domain type: ITombstoneEvent.DeletedById
src/Framework/Domain/Domain.Interfaces/Entities/ITombstoneEvent.cs:8 -
Domain Modelling
DM2
Primitive id on a domain type: Created.AgainstId
src/Subdomains/Shared/Domain.Events.Shared/Ancillary/Audits/Created.cs:19
-
Architecture
D6
Low cohesion: DiagnosticsDataCollector (LCOM4 5)
src/Connectors/KurrentDB.Connectors/Infrastructure/Diagnostics/DiagnosticsDataCollector.cs:16 -
Architecture
D6
Low cohesion: GenericDiagnosticsListener (LCOM4 4)
src/Connectors/KurrentDB.Connectors/Infrastructure/Diagnostics/GenericDiagnosticsListener.cs:12 -
Architecture
D6
Low cohesion: MultiSourceDiagnosticsListener (LCOM4 5)
src/Connectors/KurrentDB.Connectors/Infrastructure/Diagnostics/MultiSourceDiagnosticsListener.cs:11 -
Architecture
D6
Low cohesion: SingleSourceDiagnosticsListener (LCOM4 7)
src/Connectors/KurrentDB.Connectors/Infrastructure/Diagnostics/SingleSourceDiagnosticsListener.cs:11
-
Domain Modelling
DM4
Anemic entity: AuditableEntity
src/server/FakeSurveyGenerator.Application/Domain/Shared/SeedWork/AuditableEntity.cs:3 -
Domain Modelling
DM5
Mutable entity: AuditableEntity
src/server/FakeSurveyGenerator.Application/Domain/Shared/SeedWork/AuditableEntity.cs:3 -
Domain Modelling
DM1
Aggregate holds a reference to another aggregate: Survey.Owner
src/server/FakeSurveyGenerator.Application/Domain/Surveys/Survey.cs:36 -
Domain Modelling
DM4
Anemic entity: User
src/server/FakeSurveyGenerator.Application/Domain/Users/User.cs:8
-
Event-Driven
ED4
Dual write (no outbox): CancelTicketHandler..ctor
src/Modules/TicketGate.Booking/Features/Tickets/Commands/CancelTicket/CancelTicketHandler.cs:15 -
Event-Driven
ED4
Dual write (no outbox): CancelTicketHandler.Handle
src/Modules/TicketGate.Booking/Features/Tickets/Commands/CancelTicket/CancelTicketHandler.cs:23 -
Event-Driven
ED4
Dual write (no outbox): ReserveTicketHandler..ctor
src/Modules/TicketGate.Booking/Features/Tickets/Commands/ReserveTicket/ReserveTicketHandler.cs:22 -
Event-Driven
ED4
Dual write (no outbox): ReserveTicketHandler.Handle
src/Modules/TicketGate.Booking/Features/Tickets/Commands/ReserveTicket/ReserveTicketHandler.cs:34
-
Event-Driven
ED3
Event not named in past tense: IntegrationMessage
src/Core/Dirt/Models/Data/EventIntegrations/IntegrationMessage.cs:6 -
Architecture
AX2
Stateful singleton: DynamicAuthenticationSchemeProvider
bitwarden_license/src/Sso/Utilities/DynamicAuthenticationSchemeProvider.cs:27 -
Architecture
D6
Low cohesion: ToolsController (LCOM4 10)
src/Admin/Controllers/ToolsController.cs:23 -
Architecture
D6
Low cohesion: SecurityTaskController (LCOM4 4)
src/Api/Vault/Controllers/SecurityTaskController.cs:17
-
Architecture
D6
Low cohesion: Build (LCOM4 6)
build/build.cs:17 -
Architecture
D6
Low cohesion: CorrelatedMartenLogger (LCOM4 8)
src/AspNetCoreWithMarten/Samples/PerScopeSessionCreation/Startup.cs:24 -
Architecture
D6
Low cohesion: EfCoreProjectionStorage (LCOM4 5)
src/Marten.EntityFrameworkCore/EfCoreProjectionStorage.cs:28 -
Architecture
D6
Low cohesion: BufferWriterStream (LCOM4 5)
src/Marten.Newtonsoft/Services/BufferWriterStream.cs:14
-
Event-Driven
ED4
Dual write (no outbox): CreateBookingCommandHandler.Handle
TABP.Application/Features/Bookings/Commands/Create/CreateBookingCommandHandler.cs:53
-
Event-Driven
ED3
Event not named in past tense: DomainNotification
src/FrederickNguyen.DomainCore/Notification/DomainNotification.cs:23 -
Domain Modelling
DM2
Primitive id on a domain type: DomainNotification.DomainNotificationId
src/FrederickNguyen.DomainCore/Notification/DomainNotification.cs:29 -
Domain Modelling
DM2
Primitive id on a domain type: DomainNotification.Key
src/FrederickNguyen.DomainCore/Notification/DomainNotification.cs:35 -
Domain Modelling
DM5
Mutable entity: Cart
src/FrederickNguyen.DomainLayer/AggregatesModels/Carts/Models/Cart.cs:29
-
Event-Driven
ED4
Dual write (no outbox): CreateOneOrganizationCommandHandler..ctor
Apps/Api/Contexts/Accounts/Organizations/Application/CreateOne/Commands/CreateOneOrganization.CommandHandler.cs:13 -
Event-Driven
ED4
Dual write (no outbox): CreateOneOrganizationCommandHandler.HandleAsync
Apps/Api/Contexts/Accounts/Organizations/Application/CreateOne/Commands/CreateOneOrganization.CommandHandler.cs:25 -
Event-Driven
ED4
Dual write (no outbox): CreateOneOrganizationExternalEventHandler..ctor
Apps/Api/Contexts/Accounts/Organizations/Application/CreateOne/Events/CreateOneOrganizationExternal.EventHandler.cs:12 -
Event-Driven
ED4
Dual write (no outbox): CreateOneOrganizationExternalEventHandler.HandleAsync
Apps/Api/Contexts/Accounts/Organizations/Application/CreateOne/Events/CreateOneOrganizationExternal.EventHandler.cs:21
-
Architecture
AX2
Stateful singleton: WatchRepository
Infrastructure/Repositories/WatchRepository.cs:29
-
Domain Modelling
DM6
Domain depends on infrastructure: AccessionAttachment
PeakLims/src/PeakLims/Domain/AccessionAttachments/AccessionAttachment.cs:13 -
Domain Modelling
DM6
Domain depends on infrastructure: UploadAccessionAttachmentDto
PeakLims/src/PeakLims/Domain/AccessionAttachments/Dtos/UploadAccessionAttachmentDto.cs:3 -
Domain Modelling
DM6
Domain uses infrastructure in a method body: Handler
PeakLims/src/PeakLims/Domain/AccessionAttachments/Features/GetAccessionAttachmentList.cs:20 -
Domain Modelling
DM6
Domain depends on infrastructure: Command
PeakLims/src/PeakLims/Domain/AccessionAttachments/Features/UploadAccessionAttachmentFile.cs:13
-
Domain Modelling
DM5
Mutable entity: Customer
src/eShopOnWinUI.Domain/Customers/Customer.cs:7 -
Domain Modelling
DM4
Anemic entity: Customer
src/eShopOnWinUI.Domain/Customers/Customer.cs:7 -
Domain Modelling
DM4
Anemic entity: Product
src/eShopOnWinUI.Domain/Products/Product.cs:6 -
Domain Modelling
DM4
Anemic entity: Shipment
src/eShopOnWinUI.Domain/Shipments/Shipment.cs:7
-
Event-Driven
ED4
Dual write (no outbox): Handler.Handle
Src/Application/Customers/Commands/CreateCustomer/CreateCustomerCommand.cs:44 -
Architecture
AX6
Fat interface: INorthwindDbContext (34 members)
Src/Application/Common/Interfaces/INorthwindDbContext.cs:8
-
Architecture
AX6
Fat interface: IListResponseModel (19 members)
src/Application/Common/Dependencies/DataAccess/Repositories/Common/IListResponseModel.cs:3
-
Event-Driven
ED4
Dual write (no outbox): OrderStatusChangedToPaidIntegrationEventHandler persists, GracePeriodConfirmedIntegrationEventHandler publishes
src/Catalog.API/IntegrationEvents/EventHandling/OrderStatusChangedToPaidIntegrationEventHandler.cs:3 -
Domain Modelling
DM3
Integration event couples to a producer-owned enum: OrderStatusChangedToAwaitingValidationIntegrationEvent.OrderStatus
src/Ordering.API/Application/IntegrationEvents/Events/OrderStatusChangedToAwaitingValidationIntegrationEvent.cs:6 -
Domain Modelling
DM3
Integration event couples to a producer-owned enum: OrderStatusChangedToCancelledIntegrationEvent.OrderStatus
src/Ordering.API/Application/IntegrationEvents/Events/OrderStatusChangedToCancelledIntegrationEvent.cs:6 -
Domain Modelling
DM3
Integration event couples to a producer-owned enum: OrderStatusChangedToPaidIntegrationEvent.OrderStatus
src/Ordering.API/Application/IntegrationEvents/Events/OrderStatusChangedToPaidIntegrationEvent.cs:6
-
Architecture
D6
Low cohesion: ClusterClient (LCOM4 5)
src/OrigoDB.Core/Clients/ClusterClient.cs:9 -
Architecture
D6
Low cohesion: PartitionClient (LCOM4 7)
src/OrigoDB.Core/Clients/PartitionClient.cs:13 -
Architecture
D6
Low cohesion: RemoteEngineClient (LCOM4 4)
src/OrigoDB.Core/Clients/RemoteEngineClient.cs:9 -
Architecture
D6
Low cohesion: EngineConfiguration (LCOM4 5)
src/OrigoDB.Core/Configuration/EngineConfiguration.cs:13
-
Architecture
AX6
Fat interface: IManager (17 members)
CryptoMonitor/CryptoMonitor.BL/IManager.cs:5 -
Architecture
AX6
Fat interface: IRepository (17 members)
CryptoMonitor/CryptoMonitor.DAL/IRepository.cs:5
-
Architecture
D6
Low cohesion: BasicCardSystem (LCOM4 5)
Canine/Canine.TacticalBattleEngine/Modules/Cards/BasicCardSystem.cs:8 -
Architecture
D6
Low cohesion: TeamBasedFactions (LCOM4 4)
Canine/Canine.TacticalBattleEngine/Modules/Factions/TeamBasedFactions.cs:10 -
Architecture
D6
Low cohesion: GoldManaResourceSystem (LCOM4 4)
Canine/Canine.TacticalBattleEngine/Modules/Resources/GoldManaResourceSystem.cs:8 -
Architecture
D6
Low cohesion: SimulationRngProvider (LCOM4 4)
Canine/Canine.TacticalBattleEngine/Simulation/SimulationRngProvider.cs:7
-
Architecture
D6
Low cohesion: MemberApplicationManager (LCOM4 4)
src/Umbraco.Cms.Api.Delivery/Security/MemberApplicationManager.cs:8 -
Architecture
D6
Low cohesion: RoutingServiceBase (LCOM4 4)
src/Umbraco.Cms.Api.Delivery/Services/RoutingServiceBase.cs:10 -
Architecture
D6
Low cohesion: DocumentControllerBase (LCOM4 5)
src/Umbraco.Cms.Api.Management/Controllers/Document/DocumentControllerBase.cs:19 -
Architecture
D6
Low cohesion: ContentTypeEditingPresentationFactory (LCOM4 6)
src/Umbraco.Cms.Api.Management/Factories/ContentTypeEditingPresentationFactory.cs:10
-
Event-Driven
ED4
Dual write (no outbox): UpdateCategoryHandler.HandleAsync
src/Products/Products.Core/Features/Categories/Commands/UpdateCategory.cs:38 -
Event-Driven
ED4
Dual write (no outbox): CreateProductHandler.HandleAsync
src/Products/Products.Core/Features/Products/Commands/CreateProduct.cs:47 -
Event-Driven
ED4
Dual write (no outbox): RegisterHandler.HandleAsync
src/Users/Users.Core/Features/Users/Register.cs:50 -
Architecture
D6
Low cohesion: User (LCOM4 5)
src/Users/Users.Core/Entities/User.cs:12
-
Architecture
AX2
Stateful singleton: EntityIndex
HiP-DataStore/Core/WriteModel/EntityIndex.cs:17 -
Architecture
AX2
Stateful singleton: ExhibitPageIndex
HiP-DataStore/Core/WriteModel/ExhibitPageIndex.cs:8 -
Architecture
AX2
Stateful singleton: RatingIndex
HiP-DataStore/Core/WriteModel/RatingIndex.cs:11 -
Architecture
AX2
Stateful singleton: ReferencesIndex
HiP-DataStore/Core/WriteModel/ReferencesIndex.cs:13
-
Event-Driven
ED4
Dual write (no outbox): CreateUrlCommandHandler persists, GetUrlByAliasQueryHandler publishes
Lynx.RedirectionService/src/Lynx.RedirectionService.Application/Features/Urls/Commands/CreateUrl/CreateUrlCommandHandler.cs:11 -
Domain Modelling
DM2
Primitive id on a domain type: UrlVisitedEvent.UrlId
Lynx.RedirectionService/src/Lynx.RedirectionService.Domain/Urls/Events.cs:5 -
Architecture
AX9
Query handler raises events: GetUrlByAlias.GetUrlByAliasQueryHandler
Lynx.RedirectionService/src/Lynx.RedirectionService.Application/Features/Urls/Queries/GetUrlByAlias/GetUrlByAliasQueryHandler.cs:12
-
Architecture
AX6
Fat interface: Added (24 members)
src/Contexts/Ordering/Language/Buyer/Entities/Address/Events/Added.cs:8 -
Architecture
AX6
Fat interface: Added (24 members)
src/Contexts/Ordering/Language/Buyer/Entities/PaymentMethod/Events/Added.cs:8 -
Architecture
AX6
Fat interface: Drafted (18 members)
src/Contexts/Ordering/Language/Order/Events/Drafted.cs:8
-
Architecture
D6
Low cohesion: ApplicationUser (LCOM4 4)
Companies/Wilson.Companies.Core/Entities/ApplicationUser.cs:7 -
Architecture
D6
Low cohesion: AccountController (LCOM4 6)
Web/Wilson.Web/Controllers/AccountController.cs:17 -
Architecture
D6
Low cohesion: ManageController (LCOM4 4)
Web/Wilson.Web/Controllers/ManageController.cs:14
-
Event-Driven
ED4
Dual write (no outbox): AddPortfolioHandler.HandleAsync
src/Modules/InvestmentStrategies/src/InvestTracker.InvestmentStrategies.Application/InvestmentStrategies/Commands/Handlers/AddPortfolioHandler.cs:36 -
Event-Driven
ED4
Dual write (no outbox): CreateInvestmentStrategyHandler.HandleAsync
src/Modules/InvestmentStrategies/src/InvestTracker.InvestmentStrategies.Application/InvestmentStrategies/Commands/Handlers/CreateInvestmentStrategyHandler.cs:26 -
Domain Modelling
DM4
Anemic entity: Collaboration
src/Modules/InvestmentStrategies/src/InvestTracker.InvestmentStrategies.Domain/Collaborations/Entities/Collaboration.cs:10 -
Domain Modelling
DM5
Mutable entity: InvestmentStrategy
src/Modules/InvestmentStrategies/src/InvestTracker.InvestmentStrategies.Domain/InvestmentStrategies/Entities/InvestmentStrategy.cs:11
-
Architecture
AX2
Stateful singleton: ItemAddedManager
Jellyfin.Plugin.JellyPy/Events/Managers/ItemAddedManager.cs:26 -
Architecture
AX2
Stateful singleton: ItemDeletedManager
Jellyfin.Plugin.JellyPy/Events/Managers/ItemDeletedManager.cs:19 -
Architecture
AX2
Stateful singleton: ScriptExecutionService
Jellyfin.Plugin.JellyPy/Services/ScriptExecutionService.cs:22
-
Domain Modelling
DM2
Primitive id on a domain type: Model.BrandId
src/Main.Domain/Entities/ModelEntity/Model.cs:10 -
Domain Modelling
DM2
Primitive id on a domain type: Vehicle.ModelId
src/Main.Domain/Entities/VehicleEntity/Vehicle.cs:10 -
Architecture
AX6
Fat interface: IVehicleRepository (16 members)
src/Main.Application/Contracts/IVehicleRepository.cs:9 -
Architecture
AX7
Cross-slice coupling: Brands → Common
src/Main.Application/Features/Brands/Queries/GetMany/GetManyBrandsResponse.cs:5
-
Architecture
AX6
Fat interface: IBusFactoryConfigurator (26 members)
src/MassTransit.Abstractions/Configuration/IBusFactoryConfigurator.cs:16 -
Architecture
AX6
Fat interface: IReceiveEndpointConfigurator (22 members)
src/MassTransit.Abstractions/Configuration/Middleware/IReceiveEndpointConfigurator.cs:11 -
Architecture
AX6
Fat interface: ConsumeContext (24 members)
src/MassTransit.Abstractions/Contexts/ConsumeContext.cs:9 -
Architecture
AX6
Fat interface: ExecuteContext (26 members)
src/MassTransit.Abstractions/Contexts/ExecuteContext.cs:7
-
Architecture
AX1
Captive dependency: singleton AppInit captures transient ISettingsRepository
src/Profitocracy.Mobile/AppInit.xaml.cs:17 -
Architecture
AX1
Captive dependency: singleton AppShell captures transient IProfileRepository
src/Profitocracy.Mobile/AppShell.xaml.cs:7
-
Event-Driven
ED3
Event not named in past tense: IEvent
src/BuildingBlocks/BuildingBlocks.Abstractions/CQRS/Event/IEvent.cs:8 -
Domain Modelling
DM2
Primitive id on a domain type: IEvent.EventId
src/BuildingBlocks/BuildingBlocks.Abstractions/CQRS/Event/IEvent.cs:13 -
Event-Driven
ED3
Event not named in past tense: IDomainEvent
src/BuildingBlocks/BuildingBlocks.Abstractions/CQRS/Event/Internal/IDomainEvent.cs:6 -
Event-Driven
ED3
Event not named in past tense: IDomainNotificationEvent
src/BuildingBlocks/BuildingBlocks.Abstractions/CQRS/Event/Internal/IDomainNotificationEvent.cs:9
-
Architecture
D6
Low cohesion: TinyIoCContainer (LCOM4 26)
src/Memstate.Core/Configuration/TinyIoC.cs:1075 -
Architecture
D6
Low cohesion: ObjectFactoryBase (LCOM4 4)
src/Memstate.Core/Configuration/TinyIoC.cs:2754 -
Architecture
D6
Low cohesion: Log4NetLogProvider (LCOM4 4)
src/Memstate.Core/LibLog/5.0.8/LogProviders/Log4NetLogProvider.cs:16 -
Architecture
D6
Low cohesion: LogProviderBase (LCOM4 6)
src/Memstate.Core/LibLog/5.0.8/LogProviders/LogProviderBase.cs:22
-
Architecture
AX6
Fat interface: ICustomDocument (33 members)
CodeGenShared/CodeGen.cs:173 -
Architecture
AX6
Fat interface: ICompanyStateRepository (18 members)
CompaniesShared/Companies.cs:52 -
Architecture
AX6
Fat interface: IEntityElementState (18 members)
DesignsShared/Designs.cs:24 -
Architecture
AX6
Fat interface: IFileState (26 members)
FilesShared/Files.cs:14
-
Domain Modelling
DM2
Primitive id on a domain type: Category.OrganizationId
SolenLmsApp/Api/CourseManagement/Src/Domain/Categories/Category.cs:16 -
Domain Modelling
DM1
Aggregate holds a reference to another aggregate: Course._categories
SolenLmsApp/Api/CourseManagement/Src/Domain/Courses/Course.cs:11 -
Domain Modelling
DM1
Aggregate holds a reference to another aggregate: Course._learnersProgress
SolenLmsApp/Api/CourseManagement/Src/Domain/Courses/Course.cs:12 -
Domain Modelling
DM2
Primitive id on a domain type: Course.OrganizationId
SolenLmsApp/Api/CourseManagement/Src/Domain/Courses/Course.cs:23
-
Architecture
AX6
Fat interface: IIdentityContext (16 members)
MiniSpace.Services.Identity/src/MiniSpace.Services.Identity.Application/IIdentityContext.cs:6 -
Architecture
D6
Low cohesion: User (LCOM4 4)
MiniSpace.Services.Identity/src/MiniSpace.Services.Identity.Core/Entities/User.cs:8
-
Event-Driven
ED3
Event not named in past tense: Event
src/building-blocks/DevStore.Core/Messages/Event.cs:6 -
Event-Driven
ED3
Event not named in past tense: IntegrationEvent
src/building-blocks/DevStore.Core/Messages/Integration/IntegrationEvent.cs:3 -
Event-Driven
ED3
Event not named in past tense: OrderDoneIntegrationEvent
src/building-blocks/DevStore.Core/Messages/Integration/OrderDoneIntegrationEvent.cs:5 -
Domain Modelling
DM5
Mutable entity: Payment
src/services/DevStore.Billing.API/Models/Payment.cs:7
-
Domain Modelling
DM2
Primitive id on a domain type: AggregateRoot.TenantId
src/Shared/Domain/AggregateRoot.cs:17 -
Domain Modelling
DM2
Primitive id on a domain type: DomainEvent.EventId
src/Shared/Domain/DomainEvent.cs:9 -
Architecture
AX2
Stateful singleton: RedisMessageBus
src/Shared/Messaging/RedisMessageBus.cs:11
-
Domain Modelling
DM2
Primitive id on a domain type: Order.CustomerId
Shop.Domain/Aggregates/OrderAggregate/Order.cs:10 -
Domain Modelling
DM2
Primitive id on a domain type: OrderCreatedEvent.CustomerId
Shop.Domain/Events/OrderCreatedEvent.cs:10 -
Domain Modelling
DM2
Primitive id on a domain type: OrderItemAddedEvent.OrderId
Shop.Domain/Events/OrderItemAddedEvent.cs:8 -
Domain Modelling
DM2
Primitive id on a domain type: OrderItemAddedEvent.ProductId
Shop.Domain/Events/OrderItemAddedEvent.cs:9
-
Architecture
AX1
Captive dependency: singleton LogsWindow captures scoped LogViewModel
LogReader/LogReader/LogsWindow.xaml.cs:6 -
Architecture
AX2
Stateful singleton: SecretTokenEngine
Services/UserService/Utils/SecretTokenEngine.cs:10
-
Architecture
AX6
Fat interface: ISpecification (16 members)
src/AspnetRun.Core/Specifications/Base/ISpecification.cs:7 -
Architecture
AX6
Fat interface: IAppFileProvider (33 members)
src/AspnetRun.Infrastructure/Misc/IAppFileProvider.cs:12
-
Event-Driven
ED4
Dual write (no outbox): CommandHandler persists, CreateBudgetCommandHandler publishes
src/Common/Cqrs/Decorators/TransactionDecorator.cs:16 -
Event-Driven
ED1
Temporal coupling in handler: WebhookTriggeredEventConsumer.ConsumeAsync
src/Modules/Webhooks/Hosts/Consumers/Consumers/WebhookTriggeredEventConsumer.cs:23 -
Architecture
AX6
Fat interface: IKeycloakGeneratedApiClient (374 members)
src/Modules/Security/Clients/Keycloak/Generated/IKeycloakGeneratedApiClient.cs:29
-
Domain Modelling
DM2
Primitive id on a domain type: IEvent.EventId
src/BuildingBlocks/BuildingBlocks.Abstractions/Events/IEvent.cs:13 -
Domain Modelling
DM4
Anemic entity: AuditAggregate
src/BuildingBlocks/BuildingBlocks.Core/Domain/AuditAggregate.cs:5 -
Domain Modelling
DM4
Anemic entity: AuditableEntity
src/BuildingBlocks/BuildingBlocks.Core/Domain/AuditableEntity.cs:5 -
Domain Modelling
DM2
Primitive id on a domain type: Event.EventId
src/BuildingBlocks/BuildingBlocks.Core/Events/Event.cs:8
-
Event-Driven
ED4
Dual write (no outbox): CreateResourceCommandHandler persists, CheckGatewayHealthQueryHandler publishes
src/core/CloudStreams.Core.Application/Commands/Resources/CreateResourceCommand.cs:74 -
Architecture
D6
Low cohesion: BrokerMetrics (LCOM4 4)
src/broker/CloudStreams.Broker.Application/Services/BrokerMetrics.cs:21 -
Architecture
AX2
Stateful singleton: BrokerMetrics
src/broker/CloudStreams.Broker.Application/Services/BrokerMetrics.cs:21 -
Architecture
AX6
Fat interface: IMonacoEditorMarker (39 members)
src/dashboard/CloudStreams.Dashboard/Components/MonacoEditor/IMonacoEditorMarker.cs:20
-
Event-Driven
ED3
Event not named in past tense: IDomainEvent
src/dotnet/building-blocks/N8T.Core/Domain/Events.cs:7 -
Event-Driven
ED3
Event not named in past tense: EventBase
src/dotnet/building-blocks/N8T.Core/Domain/Events.cs:18 -
Domain Modelling
DM2
Primitive id on a domain type: EventBase.CorrelationId
src/dotnet/building-blocks/N8T.Core/Domain/Events.cs:22 -
Event-Driven
ED3
Event not named in past tense: EventWrapper
src/dotnet/building-blocks/N8T.Core/Domain/Events.cs:27
-
Event Sourcing
ES3
PII in event: PlayerScoreAdded
src/Server/Shared/LeaderBoard.SharedKernel/Application/Events/PlayerScoreAdded.cs:5 -
Event Sourcing
ES3
PII in event: PlayerScoreUpdated
src/Server/Shared/LeaderBoard.SharedKernel/Application/Events/PlayerScoreUpdated.cs:5 -
Domain Modelling
DM4
Anemic entity: PlayerScoreAggregate
src/Server/Shared/LeaderBoard.SharedKernel/Application/Models/PlayerScoreAggregate.cs:6 -
Event-Driven
ED3
Event not named in past tense: IDomainEvent
src/Server/Shared/LeaderBoard.SharedKernel/Contracts/Domain/Events/IDomainEvent.cs:6
-
Domain Modelling
DM4
Anemic entity: AuditLogEntry
src/Monolith/ClassifiedAds.Domain/Entities/AuditLogEntry.cs:5 -
Domain Modelling
DM2
Primitive id on a domain type: AuditLogEntry.UserId
src/Monolith/ClassifiedAds.Domain/Entities/AuditLogEntry.cs:7 -
Domain Modelling
DM2
Primitive id on a domain type: AuditLogEntry.ObjectId
src/Monolith/ClassifiedAds.Domain/Entities/AuditLogEntry.cs:11 -
Domain Modelling
DM4
Anemic entity: ConfigurationEntry
src/Monolith/ClassifiedAds.Domain/Entities/ConfigurationEntry.cs:5
-
Architecture
AX6
Fat interface: IGalleryCardInfo (24 members)
src/Core/MAUIsland.Core/Features/Gallery/Core/IGalleryCardInfo.cs:3 -
Architecture
D6
Low cohesion: BlazorWebViewPageViewModel (LCOM4 5)
src/Core/MAUIsland.Core/Features/Gallery/Pages/BuiltIn/Controls/BlazorWebView/BlazorWebViewPageViewModel.cs:7 -
Architecture
D6
Low cohesion: BorderPageViewModel (LCOM4 4)
src/Core/MAUIsland.Core/Features/Gallery/Pages/BuiltIn/Controls/Border/BorderPageViewModel.cs:7 -
Architecture
D6
Low cohesion: CarouselViewPageViewModel (LCOM4 6)
src/Core/MAUIsland.Core/Features/Gallery/Pages/BuiltIn/Controls/CarouselView/CarouselViewPageViewModel.cs:7
-
Architecture
AX6
Fat interface: IBaseDbContext (20 members)
Interfaces/DbContexts/IBaseDbContext.cs:8
-
Domain Modelling
DM4
Anemic entity: AggregateRoot
src/1-BuildingBlocks/Domain/Entities/AggregateRoot.cs:10 -
Domain Modelling
DM4
Anemic entity: BaseEntity
src/1-BuildingBlocks/Domain/Entities/BaseEntity.cs:8 -
Domain Modelling
DM2
Primitive id on a domain type: DomainEvent.EntityId
src/1-BuildingBlocks/Domain/Events/DomainEvent.cs:19 -
Event-Driven
ED4
Dual write (no outbox): EventStoringBehavior.Handle persists, UserRegisteredConsumer.ConsumeMessage publishes
src/1-BuildingBlocks/Infrastructure/Behaviors/EventStoringBehavior.cs:44
-
Domain Modelling
DM4
Anemic entity: DeliverRecord
src/NetCorePal.D3Shop.Domain/AggregatesModel/DeliverAggregate/DeliverRecord.cs:8 -
Domain Modelling
DM4
Anemic entity: ClientUserLoginHistory
src/NetCorePal.D3Shop.Domain/AggregatesModel/Identity/ClientUserLoginHistoryAggregate/ClientUserLoginHistory.cs:8 -
Domain Modelling
DM5
Mutable entity: Menu
src/NetCorePal.D3Shop.Domain/AggregatesModel/Identity/MenuAggregate/Menu.cs:18 -
Domain Modelling
DM5
Mutable entity: Role
src/NetCorePal.D3Shop.Domain/AggregatesModel/Identity/RoleAggregate/Role.cs:9
-
Domain Modelling
DM2
Primitive id on a domain type: ReminderDefined.ReminderId
src/Core/Domain/Aggregates/Events/DomainEvent.cs:7 -
Domain Modelling
DM2
Primitive id on a domain type: ReminderCompleted.ReminderId
src/Core/Domain/Aggregates/Events/DomainEvent.cs:10 -
Domain Modelling
DM2
Primitive id on a domain type: ReminderFailed.ReminderId
src/Core/Domain/Aggregates/Events/DomainEvent.cs:12
-
Event-Driven
ED3
Event not named in past tense: ClienteAprovadoEvent
server/src/Clientes.CommandStack/Clientes/Events/ClienteAprovadoEvent.cs:6 -
Event-Driven
ED3
Event not named in past tense: ClienteCadastradoEvent
server/src/Clientes.CommandStack/Clientes/Events/ClienteCadastradoEvent.cs:6 -
Event-Driven
ED3
Event not named in past tense: ClienteRecusadoEvent
server/src/Clientes.CommandStack/Clientes/Events/ClienteRecusadoEvent.cs:6 -
Event-Driven
ED3
Event not named in past tense: Event
server/src/Core.Domain/Events/Event.cs:6
-
Event-Driven
ED4
Dual write (no outbox): CreateAudienceCommandHandler persists, BorrowRecordMarkedAsLostEventHandler publishes
src/Lms.Application/Features/Audiences/Commands/CreateAudience/CreateAudienceCommandHandler.cs:14 -
Domain Modelling
DM2
Primitive id on a domain type: BorrowRequestAcceptedEvent.BorrowRequestId
src/Lms.Domain/Circulation/Events.cs:5 -
Domain Modelling
DM2
Primitive id on a domain type: BorrowRequestRejectedEvent.BorrowRequestId
src/Lms.Domain/Circulation/Events.cs:6 -
Domain Modelling
DM2
Primitive id on a domain type: BookReturnedEvent.BorrowRecordId
src/Lms.Domain/Circulation/Events.cs:7
-
Domain Modelling
DM5
Mutable entity: Comment
server/src/Jbet.Domain/Entities/Comment.cs:8 -
Domain Modelling
DM4
Anemic entity: Comment
server/src/Jbet.Domain/Entities/Comment.cs:8 -
Domain Modelling
DM2
Primitive id on a domain type: Comment.MatchId
server/src/Jbet.Domain/Entities/Comment.cs:18 -
Domain Modelling
DM1
Aggregate holds a reference to another aggregate: Comment.Match
server/src/Jbet.Domain/Entities/Comment.cs:20
-
Architecture
D6
Low cohesion: ProjectionTypeEditorStore (LCOM4 4)
src/CloudShapes.Dashboard/Pages/ProjectionTypes/Editor/Store.cs:26 -
Architecture
D6
Low cohesion: ProjectionTypeListStore (LCOM4 6)
src/CloudShapes.Dashboard/Pages/ProjectionTypes/List/Store.cs:21 -
Architecture
D6
Low cohesion: ProjectionListStore (LCOM4 8)
src/CloudShapes.Dashboard/Pages/Projections/List/Store.cs:23 -
Architecture
AX2
Stateful singleton: BreadcrumbManager
src/CloudShapes.Dashboard/Services/BreadcrumbManager.cs:20
-
Event-Driven
ED3
Event not named in past tense: IDomainEvent
src/BuildingBlocks/N8T.Domain/DomainEventBase.cs:7 -
Event-Driven
ED3
Event not named in past tense: DomainEventBase
src/BuildingBlocks/N8T.Domain/DomainEventBase.cs:17 -
Domain Modelling
DM5
Mutable entity: StoreProductPrice
src/Inventory/CoolStore.InventoryApi/Domain/StoreProductPrice.cs:7 -
Domain Modelling
DM2
Primitive id on a domain type: StoreProductPrice.StoreId
src/Inventory/CoolStore.InventoryApi/Domain/StoreProductPrice.cs:10
-
Architecture
D6
Low cohesion: DbSqlExecutor (LCOM4 4)
SoonMonoCleanStore/Persistance/DatabaseQueryExecutor/DbSqlExecutor.cs:16
-
Architecture
D6
Low cohesion: User (LCOM4 5)
YoutubeLinks.Api/Data/Entities/User.cs:7 -
Architecture
D6
Low cohesion: MainLayout (LCOM4 4)
YoutubeLinks.Blazor/Layout/MainLayout.razor.cs:14 -
Architecture
D6
Low cohesion: PlaylistsPage (LCOM4 4)
YoutubeLinks.Blazor/Pages/Playlists/PlaylistsPage.razor.cs:18 -
Architecture
D6
Low cohesion: UsersPage (LCOM4 5)
YoutubeLinks.Blazor/Pages/Users/UsersPage.razor.cs:14
-
Domain Modelling
DM6
Domain depends on infrastructure: IAsyncLogger
server/src/server/Restaurant.Domain/Connectors/IAsyncLogger.cs:8 -
Domain Modelling
DM5
Mutable entity: Meal
server/src/server/Restaurant.Domain/Entities/Meal.cs:9 -
Domain Modelling
DM4
Anemic entity: Meal
server/src/server/Restaurant.Domain/Entities/Meal.cs:9 -
Domain Modelling
DM2
Primitive id on a domain type: Meal.RestaurantId
server/src/server/Restaurant.Domain/Entities/Meal.cs:19
-
Architecture
D6
Low cohesion: TransferPresenter (LCOM4 4)
accounts-api/src/Application/UseCases/Transfer/TransferPresenter.cs:7 -
Architecture
D6
Low cohesion: WithdrawPresenter (LCOM4 4)
accounts-api/src/Application/UseCases/Withdraw/WithdrawPresenter.cs:6
-
Architecture
D6
Low cohesion: MetricsCollector (LCOM4 9)
Source/EventHorizon/Consumer/Connections/MetricsCollector.cs:16 -
Architecture
D6
Low cohesion: MetricsCollector (LCOM4 8)
Source/EventHorizon/Consumer/MetricsCollector.cs:15 -
Architecture
D6
Low cohesion: EventsFromEventHorizonFetcher (LCOM4 12)
Source/EventHorizon/Consumer/Processing/EventsFromEventHorizonFetcher.cs:18 -
Architecture
D6
Low cohesion: MetricsCollector (LCOM4 5)
Source/EventHorizon/Consumer/Processing/MetricsCollector.cs:15
-
Event-Driven
ED3
Event not named in past tense: BasketCheckoutEvent
src/BuildingBlocks/BuildingBlocks.Messaging/Events/BasketCheckoutEvent.cs:3 -
Event-Driven
ED4
Dual write (no outbox): CreateOrderHandler persists, OrderCreatedEventHandler publishes
src/Services/Ordering/Ordering.Application/Orders/Commands/CreateOrderHandler.cs:3 -
Domain Modelling
DM4
Anemic entity: Aggregate
src/Services/Ordering/Ordering.Domain/Abstractions/Aggregate.cs:3 -
Event-Driven
ED3
Event not named in past tense: IDomainEvent
src/Services/Ordering/Ordering.Domain/Abstractions/IDomainEvent.cs:3
-
Architecture
D6
Low cohesion: BathRoomManagerActor (LCOM4 4)
Domain/Entities/Hostel.Entity/Floor/BathRoomManagerActor.cs:15 -
Architecture
D6
Low cohesion: FloorActor (LCOM4 4)
Domain/Entities/Hostel.Entity/Floor/FloorActor.cs:17 -
Architecture
D6
Low cohesion: RoomManagerActor (LCOM4 4)
Domain/Entities/Hostel.Entity/Floor/RoomManagerActor.cs:15 -
Architecture
D6
Low cohesion: ToiletManagerActor (LCOM4 4)
Domain/Entities/Hostel.Entity/Floor/ToiletManagerActor.cs:15
-
Architecture
AX6
Fat interface: IClusterHub (45 members)
src/Andy.X.Core/Abstractions/Hubs/Clusters/IClusterHub.cs:7 -
Architecture
AX6
Fat interface: ICoreRepository (97 members)
src/Andy.X.Core/Abstractions/Repositories/CoreState/ICoreRepository.cs:13 -
Architecture
AX6
Fat interface: IClusterHubService (43 members)
src/Andy.X.Core/Abstractions/Services/Clusters/IClusterHubService.cs:16 -
Architecture
AX6
Fat interface: ICoreService (52 members)
src/Andy.X.Core/Abstractions/Services/CoreState/ICoreService.cs:13
-
Event-Driven
ED4
Dual write (no outbox): PublishCloudEventToChannelCommandHandler.Handle
src/Gateway/Neuroglia.K8s.Eventing.Gateway.Application/Commands/PublishCloudEventToChannelCommandHandler.cs:48 -
Architecture
AX2
Stateful singleton: EventChannel
src/Channels/EventStore/Neuroglia.K8s.Eventing.Channels.EventStore.Infrastructure/Services/EventChannel.cs:27 -
Architecture
AX2
Stateful singleton: EventChannel
src/Channels/NATSS/Neuroglia.K8s.Eventing.Channels.Nats.Infrastructure/Services/EventChannel.cs:24 -
Architecture
AX6
Fat interface: ISubscription (19 members)
src/Gateway/Neuroglia.K8s.Eventing.Gateway.Infrastructure/ISubscription.cs:11
-
Architecture
AX2
Stateful singleton: MaCrossoverStrategy
src/Services/StrategyEngine/Strategies/MaCrossoverStrategy.cs:18
-
Architecture
AX6
Fat interface: IEventAppService (16 members)
src/EventHub.Application.Contracts/Events/IEventAppService.cs:10 -
Architecture
D6
Low cohesion: Session (LCOM4 5)
src/EventHub.Domain/Events/Session.cs:10 -
Architecture
D6
Low cohesion: Organization (LCOM4 4)
src/EventHub.Domain/Organizations/Organization.cs:9
-
Architecture
AX6
Fat interface: IUserAccessor (17 members)
Identity/UserAccessorService/IUserAccessor.cs:5 -
Architecture
D6
Low cohesion: Forum (LCOM4 4)
Web.Forums.Domain/Aggregate/Forum.Moderate.cs:5 -
Architecture
AX9
Query handler writes persistent state: ReadModel.Handler
Web.Forums.UseCases/Announcements.ReadModel/QueryAnnouncementDisplay.cs:14 -
Architecture
AX9
Query handler writes persistent state: WriteModel.Handler
Web.Forums.UseCases/Announcements.WriteModel/CommandAnnouncementCreate.cs:27
-
Domain Modelling
DM7
Repository for a non-root entity: ActivityRepository → Activity
Src/Libraries/1-Infrastructure/Infrastructure.Data/ReadModel/Repositories/ActivityRepository.cs:13 -
Domain Modelling
DM7
Repository for a non-root entity: BoardRepository → Board
Src/Libraries/1-Infrastructure/Infrastructure.Data/ReadModel/Repositories/BoardRepository.cs:13 -
Domain Modelling
DM7
Repository for a non-root entity: CardRepository → Card
Src/Libraries/1-Infrastructure/Infrastructure.Data/ReadModel/Repositories/CardRepository.cs:13 -
Domain Modelling
DM7
Repository for a non-root entity: CommentRepository → Comment
Src/Libraries/1-Infrastructure/Infrastructure.Data/ReadModel/Repositories/CommentRepository.cs:13
-
Event-Driven
ED4
Dual write (no outbox): CreateAdminCommandHandler.Handle persists, AdminGeneratedCodeConsumer.Consume publishes
App/AdminService/Application/AdminService.Application/Commands/CreateAdmin/CreateAdminCommandHandler.cs:13
-
Architecture
AX2
Stateful singleton: RabbitEventBus
TiendaServicios.RabbitMQ.Bus/Implement/RabbitEventBus.cs:17
-
Architecture
AX9
Query handler writes persistent state: AdminServices.Handler
Aspian.Application.Core/UserServices/AdminServices/Login.cs:38 -
Architecture
AX6
Fat interface: IAttachment (45 members)
Aspian.Domain/AttachmentModel/IAttachment.cs:10 -
Architecture
AX6
Fat interface: IComment (33 members)
Aspian.Domain/CommentModel/IComment.cs:9 -
Architecture
AX6
Fat interface: IOptionmeta (30 members)
Aspian.Domain/OptionModel/IOptionmeta.cs:6
Architecture, Domain Modelling, Event-Driven & Event Sourcing lenses — deterministic, file-and-line, never security detail. Browse every published survey →