Landmåleren står over jeres scannere — ikke ved siden af dem.
Watchdog er ikke endnu en linjeniveau-scanner, der kæmper om den samme plads. Det er et uafhængigt eftersyn én højde oppe: det læser hele jeres produkt og udsteder ét reproducerbart Codebase Assurance Index (CAI), som jeres ingeniører, jeres agenter og jeres revisor kan handle på. Behold alle de værktøjer, I allerede kører — Watchdog besvarer det spørgsmål, ingen af dem gør.
C#/.NET · en måling, ikke en mening.
-
Ikke en CI-scanner eller linterScorer aldrig en linje og blokerer aldrig et merge.
-
Ikke en SAST- / dataflow-motorLæser deres signal; overgår ikke en i dybde.
-
Ikke en kodningsagentRedigerer, committer, pusher eller åbner aldrig en PR.
-
Ikke en certificererRegistrerer beviset; et navngivet menneske underskriver.
-
En uafhængig landmålerÉn højde over jeres scannere.
-
Ét reproducerbart CAIUnderskrevet, commit-pinnet — kører igen til samme tal.
-
Et skrivebeskyttet orakelServerer hvert fund til jeres agent over MCP.
-
Et helsystems-eftersynArkitektur, modenhed, compliance & risiko i én rapport.
Specialisterne holder linjen. Landmåleren bedømmer systemet.
De værktøjer, I allerede kører, er specialister — hvert ejer én kolonne af bekymring, nede ved linjen eller filen, og det er præcis, hvad de skal. Klatr op til modulet, systemet, hele porteføljen, og opgaven skifter: den bliver til syntese. Er arkitekturen solid? Modnes den? Kan I bevise, at den overholder reglerne? Det er den højde, Watchdog blev bygget til.
Læs det som højde og opgave, ikke som en rangliste — ikke en pointtavle.
Fordi det spænder over hele den højde, læses én måling i hver højde: en bestyrelse ser ét CAI, en arkitekt ser den fejlende linse, en ingeniør — eller deres kodningsagent — får den præcise fil, linje og rettelse. Scannerne stopper hver på én etage; eftersynet er den skakt, der forbinder dem.
Det fortjener de øverste etager gennem syntese — arkitektur, modenhed og compliance foldet sammen til ét reproducerbart tal. Og det er ærligt om den nederste: ved linjen og pull requesten viger det for specialisterne. Det læser deres output og placerer det i systembilledet; det erstatter aldrig en dyb SAST-motor eller jeres live IDE-lint.
Fire ting — den første kan ingen scanner gøre krav på.
Samme kode ind, samme CAI ud under samme rubrik og rådgivende data — kør eftersynet igen, og tallet holder. Det er dét, der gør en trend ægte, et kontraktgulv, I kan sætte og verificere ved hvert planlagt scan, og et compliance-tal, en revisor kan stole på. Sådan virker rubrikken →
Betingede linser for DDD-, hændelsesdrevne og event-sourcede designs, ADR-overholdelse og en modenhedsstige. Watchdog efterser, hvad koden forsøger at være — ikke kun, hvad den bogstaveligt siger.
Hvert repo, I leverer sammen — helt ned til tjenesterne inde i et monorepo — rulles op til ét CAI, med hvert repos compliance-erklæring inkluderet. Ikke en bunke usammenhængende rapporter per repo.
Watchdog redigerer aldrig jeres kode og certificerer jer aldrig — det samler beviset; et menneske underskriver. Den, der måler, sidder aldrig med ved bordet. Vores neutralitet →
Samme repos. To synsvinkler.
En scanner gennemgår ét repo eller ét pull request. Watchdog gennemgår produktet — hvert repo, I leverer som en enhed, og dekomponerer et monorepo til et CAI per deploybar tjeneste: hver tjeneste scoret af de samme linser som hele produktet og derefter rullet op til ét helprodukts-eftersyn, med hvert repos compliance-erklæring inkluderet.
Alle andre værktøjer her er afgrænset til et repo eller en diff. Watchdog er afgrænset til det, I faktisk leverer.
SIG & Watchdog — den samme slags dom.
Software Improvement Group var pioner for det uafhængige, bestyrelsesgodkendte softwareeftersyn — en benchmarket model leveret gennem en konsulentopgave, og den er fremragende. Watchdog udsteder den samme slags uafhængige dom ved en anden mekanisme: en deterministisk, reproducerbar rubrik, I kører selv — løbende, samme dag I beder om det, fra ét enkelt team til en hel portefølje. Samme højde; selvbetjent, hvor SIG er højt-berørt.
De ægte alternativer — og hvorfor eftersynet slår hvert af dem.
Når et team eller en køber springer Watchdog over, er det ikke for endnu en scanner — det er for ét af disse. Så det er dét, eftersynet faktisk måles imod.
SonarQube + en teamleads dømmekraft + et regneark. Det virker — indtil teamleadet rejser, eller regnearket er det eneste sted, dommen lever. Watchdog er præcis den stak, gjort reproducerbar, uafhængig og underskrivbar — rubrikken overlever personen.
Et konsulenthus læser koden i fjorten dage og skriver en dom. Watchdog udsteder den samme slags dom deterministisk, samme dag I beder om det — og udsteder den igen ved hvert scan i stedet for én gang, så trenden er ægte.
M&A-modstykket: fremragende, faktureret per opgave, frosset den dag de holder op med at læse. Watchdog giver et CAI, der er sammenligneligt fra LOI til closing, som jeres egne rådgivere kan udlede igen fra selve koden. For opkøbere →
Jeres scannere er instrumenter. Watchdog er eftersynet.
En landmåler konkurrerer ikke med fugtmåleren — den læser instrumenterne og skriver den rapport, en køber kan handle på. Jeres scannere lever én højde under eftersynet og fodrer det: Watchdog læser de samme signaler, tilføjer arkitektur-, domænehensigts- og git-historik-dimensioner af sit eget og ruller dem sammen til ét reproducerbart CAI. Behold hver eneste af dem — ingen er en konkurrent, og ingen er en ligemand. Det eneste, der gør Watchdogs job, er et andet uafhængigt assurance-organ, som SIG ovenfor.
De holder linjen. Watchdog bedømmer systemet — det eneste på denne side, der gør det job.
| Hvis du har brug for… | Grib til… | Watchdogs rolle |
|---|---|---|
| Blokere en dårlig linje, før den merges | SonarQube / Coverity (IDE & CI) | læser deres signal, scorer det ind i systemdommen |
| Gennemgå en afhængighedsgraf i hånden | NDepend | folder et IL-bloat-signal ind i et reproducerbart CAI |
| Den dybeste adfærdsmæssige / sociale analyse | CodeScene | sine egne hotspots + bus-factor, scoret, serveret til enhver agent |
| Den dybeste SCA / fix-PR’er | Snyk | NuGet + npm SCA + en CycloneDX SBOM ved hvert scan, kortlagt til NIS2 / DORA |
| En uafhængig, bestyrelsesgodkendt dom | SIG (konsulent) eller Watchdog (selvbetjent) | det samme job, kørt på forlangende |
| At erstatte regnearket, en manuel audit eller teknisk DD | Watchdog | det er jobbet |
Behold alle værktøjerne ovenfor — ingen er en rival. Den nederste række er den, Watchdog ejer; de dybe gennemgange nedenfor viser, hvordan hvert instrument fodrer eftersynet.
SonarQube + Watchdog
- bredde på tværs af 30+ sprog
- tusindvis af linjeregler + dataflow-SAST
- en live IDE-gate, der blokerer dårlige merges
- arkitektur & modenhed, scoret deterministisk ind i CAI’et
- én portefølje-oprulning, ikke støj per repo
- underskrevet compliance + agent-handlbare opgaver
Bedre sammen: SonarQube holder hver linje ren på tværs af kodebasen; Watchdog fortæller jer, om det system, de linjer summer op til, er solidt, compliant og leveringsklart — og udsender en changelog ved hvert scan (CAI & deltaer per linse, fund løst/rejst, features per område, API-endpoints tilføjet/fjernet) til jeres retro og jeres audit. Det re-scanner aldrig linjen — det arbejder én højde oppe.
NDepend + Watchdog
- dybe afhængighedsgrafer & matricer
- brugerdefinerede CQLinq-regler, IL-niveau-metrikker
- praktisk arkitekturinspektion i Visual Studio
- sin egen IL-niveau-læsning — emitteret-IL-metodebloat (Mono.Cecil), scoret ind i CAI’et
- et C4-arkitekturkort farvet efter sundhed, grænseovertrædelser tegnet med rødt — for bounded-context-systemer
- domænehensigts-linser + en modenhedsstige; et reproducerbart CAI på tværs af porteføljen + et agent-loop
Et instrument, ikke en ligemand. Begge er .NET, og begge læser den emitterede IL — men NDepend er det mikroskop, en ingeniør styrer i hånden, mens Watchdog folder et IL-bloat-signal ind i et scoret, reproducerbart eftersyn på tværs af hele produktet. Bor ned med NDepend; trend og attestér med Watchdog.
CodeScene + Watchdog
- den dybeste adfærdsmæssige & sociale analyse
- prioritér arbejdet efter, hvor I faktisk redigerer
- ACE auto-refaktorering
- sine egne hotspots, change-coupling & bus-factor — foldet ind i scoren
- arkitekturhensigts-linser + et deterministisk CAI, I kan gate på
- hvert fund serveret til jeres egen kodningsagent over MCP — det næste scan beviser, at det landede
- kontraktprofiler + underskrevet compliance
Bedre sammen: vi deler den adfærdsmæssige læsning — Watchdog udvinder hotspots, change-coupling og bus-factor fra jeres git-historik og folder dem ind i eftersynet; CodeScene går dybere på social analyse. På remediering er opdelingen åben vs lukket: CodeScene retter inde i sin egen ACE-motor, mens Watchdog forbliver skrivebeskyttet og overdrager hvert fund til den agent, I allerede kører — og måler så igen for at bevise, at rettelsen landede. CodeScene til daglig vejledning; Watchdog til det kontraktgrade, reproducerbare tal.
Snyk + Watchdog
- den dybeste SCA-database, de bredeste økosystemer
- container- & registry-scanning, automatiserede fix-PR’er
- løbende remediering som et dagligt workflow
- SCA for NuGet & npm — plus IaC, hemmeligheder, licenser
- en CycloneDX SBOM, ved hvert eftersyn
- alt foldet ind i ét CAI, kortlagt til NIS2 / DORA
Bedre sammen: begge scanner afhængigheder — Watchdog dækker NuGet & npm og udsender en CycloneDX SBOM ved hvert eftersyn; Snyk går dybere og bredere (Python, Go, containere, fix-PR’er). Snyk til remedieringsdybde; Watchdog til den stående, reproducerbare posture.
Coverity + Watchdog
- sti-følsom dataflow-defektdetektion
- C/C++/Java-bredde, sikkerhedskritisk stringens
- MISRA / CERT-compliance
- arkitektur- & domænehensigts-linser
- et deterministisk system-niveau-CAI
- sikkerhedsfund kortlagt til CWE
Bedre sammen: Coverity beviser, at der ikke er en defekt på stien; Watchdog beviser, at delsystemet er velformet, compliant og leveringsklart. Coverity taler MISRA/CERT for C/C++; på .NET kortlægger Watchdog sine sikkerhedsfund til den CWE-taksonomi, en revisor genkender — emitteret i SARIF’en, så jeres kodescanningsværktøjer også viser den.
CodeRabbit + Watchdog
- AI-gennemgang af PR-diffen, i øjeblikket
- samtalebaserede, inline-kommentarer
- fanger problemer, mens de skrives
- et eftersyn af hele kodebasen, på en kadence
- deterministisk arkitektur & modenhed
- compliance + portefølje-oprulning + agentopgaver
Bedre sammen: CodeRabbit fanger problemer, mens I skriver dem; Watchdog fortæller jer, om det akkumulerede system er sundt, og om jeres konventioner faktisk håndhæves. Forskellig tid, forskellig højde — nul kollision.
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 →