Integrate Bus into Mocha Analyzer#9463
Merged
PascalSenn merged 10 commits intomainfrom Mar 28, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
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
MessagingGeneratorwith inspectors/models/filters to discover MessageBus handlers, module attributes, and sagas. - Added a DI source generator (
MessagingDependencyInjectionGenerator+ file builder) to emitAdd{Module}()extensions forIMessageBusHostBuilder. - 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.
…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
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9463 +/- ##
============================
============================
☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This was referenced May 1, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
MessagingDependencyInjectionGeneratorChanges
MessagingGeneratorwith inspectors/models/filters for MessageBus handler, module attribute, and saga discoveryMessagingDependencyInjectionFileBuilderto emitAdd{Module}()extensions forIMessageBusHostBuilder