Skip to content

Integrate Bus into Mocha Analyzer#9463

Merged
PascalSenn merged 10 commits intomainfrom
pse/adds-mocha-messaging-to-analyzer
Mar 28, 2026
Merged

Integrate Bus into Mocha Analyzer#9463
PascalSenn merged 10 commits intomainfrom
pse/adds-mocha-messaging-to-analyzer

Conversation

@PascalSenn
Copy link
Copy Markdown
Member

@PascalSenn PascalSenn commented Mar 27, 2026

Summary

  • Adds MessageBus awareness to Mocha.Analyzers with a new incremental generator that discovers MessageBus handlers and sagas
  • Emits DI registration extensions via MessagingDependencyInjectionGenerator
  • Adds Messaging diagnostics (MO0011–MO0014) and snapshot-based tests

Changes

  • MessagingGenerator with inspectors/models/filters for MessageBus handler, module attribute, and saga discovery
  • MessagingDependencyInjectionFileBuilder to emit Add{Module}() extensions for IMessageBusHostBuilder
  • New diagnostics: duplicate request handlers (MO0011), open generic handlers (MO0012), abstract handlers (MO0013), saga missing parameterless constructor (MO0014)
  • Comprehensive snapshot tests covering generated output and diagnostics

Copilot AI review requested due to automatic review settings March 27, 2026 07:04
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds MessageBus awareness to Mocha.Analyzers by introducing a new incremental generator that discovers MessageBus handlers/sagas and emits DI registration extensions, along with new Messaging diagnostics and snapshot-based tests.

Changes:

  • Added MessagingGenerator with inspectors/models/filters to discover MessageBus handlers, module attributes, and sagas.
  • Added a DI source generator (MessagingDependencyInjectionGenerator + file builder) to emit Add{Module}() extensions for IMessageBusHostBuilder.
  • Added Messaging diagnostics (MO0010–MO0014) and new snapshot tests covering generated output and key diagnostics.

Reviewed changes

Copilot reviewed 44 out of 44 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingSagaGeneratorTests.Generate_SimpleSaga_MatchesSnapshot.md Snapshot for generated saga registration.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingRequestHandlerGeneratorTests.Generate_SendHandler_MatchesSnapshot.md Snapshot for generated “send” request handler registration.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingRequestHandlerGeneratorTests.Generate_RequestResponseHandler_MatchesSnapshot.md Snapshot for generated request/response handler registration.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingMultiInterfaceTests.Generate_HandlerWithBatchAndEvent_RegistersAsBatch_MatchesSnapshot.md Snapshot asserting multi-interface handler registers with batch priority.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingModuleTests.Generate_ExplicitModuleName_MatchesSnapshot.md Snapshot for explicit module name via assembly attribute.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingModuleTests.Generate_DefaultModuleName_UsesAssemblyName_MatchesSnapshot.md Snapshot for default module naming derived from assembly name.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingMixedHandlerTests.Generate_AllHandlerKinds_MatchesSnapshot.md Snapshot for registering all supported handler kinds + sagas.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingEventHandlerGeneratorTests.Generate_SingleEventHandler_MatchesSnapshot.md Snapshot for a single event handler registration.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingEventHandlerGeneratorTests.Generate_MultipleEventHandlers_MatchesSnapshot.md Snapshot for multiple event handler registrations.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingDiagnosticTests.MO0014_SagaWithoutParameterlessConstructor_ReportsError.md Snapshot for MO0014 saga ctor diagnostic.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingDiagnosticTests.MO0013_AbstractMessagingHandler_ReportsWarning.md Snapshot for MO0013 abstract handler diagnostic.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingDiagnosticTests.MO0012_OpenGenericHandler_ReportsInfo.md Snapshot for MO0012 open-generic handler diagnostic.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingDiagnosticTests.MO0011_DuplicateRequestHandler_ReportsError.md Snapshot for MO0011 duplicate request handler diagnostic.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingConsumerGeneratorTests.Generate_SingleConsumer_MatchesSnapshot.md Snapshot for consumer registration.
src/Mocha/test/Mocha.Analyzers.Tests/snapshots/MessagingBatchHandlerGeneratorTests.Generate_BatchEventHandler_MatchesSnapshot.md Snapshot for batch handler registration.
src/Mocha/test/Mocha.Analyzers.Tests/Mocha.Analyzers.Tests.csproj Adds Mocha project reference needed for MessageBus types in tests.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingTestHelper.cs New helper to compile/run MessagingGenerator and snapshot results.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingSagaGeneratorTests.cs New saga generator snapshot test.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingRequestHandlerGeneratorTests.cs New request handler generator snapshot tests.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingMultiInterfaceTests.cs New test for handler kind priority cascade.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingModuleTests.cs New tests for module naming behavior.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingMixedHandlerTests.cs New test covering mixed handler kinds + saga.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingEventHandlerGeneratorTests.cs New event handler generator snapshot tests.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingDiagnosticTests.cs New diagnostic snapshot tests for MO0011–MO0014.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingConsumerGeneratorTests.cs New consumer generator snapshot test.
src/Mocha/test/Mocha.Analyzers.Tests/MessagingBatchHandlerGeneratorTests.cs New batch handler generator snapshot test.
src/Mocha/src/Mocha.Analyzers/SyntaxConstants.cs Adds metadata names for MessageBus-related symbols.
src/Mocha/src/Mocha.Analyzers/Models/SagaInfo.cs New model representing discovered saga types.
src/Mocha/src/Mocha.Analyzers/Models/MessagingModuleInfo.cs New model for [assembly: MessagingModule(...)] metadata.
src/Mocha/src/Mocha.Analyzers/Models/MessagingHandlerKind.cs New enum describing MessageBus handler kinds.
src/Mocha/src/Mocha.Analyzers/Models/MessagingHandlerInfo.cs New model representing discovered MessageBus handlers.
src/Mocha/src/Mocha.Analyzers/MessagingGenerator.cs New incremental generator to discover handlers/sagas and emit registrations + diagnostics.
src/Mocha/src/Mocha.Analyzers/KnownTypeSymbols.cs Adds cached symbols for MessageBus abstractions (handlers, requests, saga).
src/Mocha/src/Mocha.Analyzers/Inspectors/SagaInspector.cs New inspector for Saga<TState> subclasses + ctor validation (MO0014).
src/Mocha/src/Mocha.Analyzers/Inspectors/MessagingModuleInspector.cs New inspector for assembly-level MessagingModuleAttribute.
src/Mocha/src/Mocha.Analyzers/Inspectors/MessagingHandlerInspector.cs New inspector to classify handlers by kind + open-generic diagnostic (MO0012).
src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractMessagingHandlerInspector.cs New inspector to warn on abstract handlers (MO0013).
src/Mocha/src/Mocha.Analyzers/Generators/MessagingDependencyInjectionGenerator.cs Generates MessageBus DI registration source from discovered infos.
src/Mocha/src/Mocha.Analyzers/Filters/ClassWithSagaBaseClassFilter.cs New syntax filter to reduce saga inspection scope.
src/Mocha/src/Mocha.Analyzers/Filters/ClassWithMochaBaseListFilter.cs Extends candidate detection to MessageBus handler/saga type names.
src/Mocha/src/Mocha.Analyzers/FileBuilders/MessagingDependencyInjectionFileBuilder.cs Emits Add{Module} extension method for IMessageBusHostBuilder.
src/Mocha/src/Mocha.Analyzers/Errors.cs Adds Messaging diagnostics descriptors MO0010–MO0014.
src/Mocha/src/Mocha.Analyzers/AnalyzerReleases.Unshipped.md Registers new Messaging diagnostics in the unshipped list.
src/Mocha/src/Mocha.Abstractions/MessagingModuleAttribute.cs Adds MessagingModuleAttribute for assembly-level module naming.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/Mocha/src/Mocha.Analyzers/MessagingGenerator.cs
Comment thread src/Mocha/src/Mocha.Analyzers/MessagingGenerator.cs Outdated
Comment thread src/Mocha/src/Mocha.Analyzers/AnalyzerReleases.Unshipped.md Outdated
Comment thread src/Mocha/src/Mocha.Analyzers/MessagingGenerator.cs
@github-actions github-actions Bot added 📚 documentation This issue is about working on our documentation. 🌶️ website labels Mar 27, 2026
…ation

- Remove MO0010 (MissingRequestHandler) which was defined but never
  emitted by the generator
- Add LocationInfo to MessagingHandlerInfo so MO0011 (DuplicateRequestHandler)
  points to the handler declaration instead of Location.None
- Update snapshot to reflect the corrected diagnostic location
@PascalSenn PascalSenn merged commit c9ef01c into main Mar 28, 2026
127 checks passed
@PascalSenn PascalSenn deleted the pse/adds-mocha-messaging-to-analyzer branch March 28, 2026 11:32
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (5773e89) to head (4109a38).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@     Coverage Diff      @@
##   main   #9463   +/-   ##
============================
============================

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📚 documentation This issue is about working on our documentation. 🌶️ website

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants