Static code analyzer for prooph projects
A static code analyzer to extract message flow of a prooph project
composer require --dev prooph/message-flow-analyzer
The analyzer can be configured using a json file. By default the analyzer uses a
prooph_analyzer.json located in the current working directory.
An example of a default config can be found in the test example project
php vendor/bin/prooph-analyzer project:analyze
The prooph message flow analyzer scans your project for prooph messages and collects information how these messages flow through your project source code :)
The analysis contains information about:
- commands, events, queries
- message handlers per message (command handler, event listner, process manager, ...)
- message producers per message (controller, cli commands, process manager, ...)
- event recorders per event (classes implementing prooph's AggregateRoot or using the EventProducerTrait)
The message flow is written to an output file (
prooph_message_flow.json by default).
For now that's it. But imagine what you can do with this information! We'll add different output formatters to generate config for d3js or draw.io.
The message flow analyzer will also be part of the upcoming
event-store-mgmt-ui and will allow you to connect the message flow with your event streams
for debugging and monitoring.
prooph/message-flow-analyzer and the
event-store-mgmt-ui are work in progress. There is no roadmap defined yet. If you think your project could benefit
from a stable version and you or your company would like to support development then get in touch.
You can add include and exclude filters for files and directories.
prooph/message-flow-analyzer ships with some default filters.
Check the linked example config above. The filter implementations can be found in the Filter dir
Class visitors are called for every php class found in the project and not excluded by a filter.
They take a
Roave\BetterReflection\Reflection\ReflectionClass and the
Prooph\MessageFlowAnalyzer\MessageFlow as input and if a visitor finds something
interesting in the class it can add this information to the
prooph/message-flow-analyzer ships with default class visitors (see example config) which can be found in the Visitor dir.
You can see
prooph/message-flow-analyzer in action by running it against proophessor-do.
- Clone proophessor-do
prooph/message-flow-analyzer: dev-masterto the
require-devconfig of proophessor-do's
- Run composer install
- Copy prooph_analyzer.json into root dir of proophessor-do
- Copy ExcludeBlacklistedFiles.php into
src/Infrastructure/ProophAnalyzer. This is needed because proophessor-do contains a prepared factory for mongodb connection but mongo is not installed by default so the mongo classes cannot be loaded.
"Prooph\\ProophessorDo\\Infrastructure\\ProophAnalyzer\\ExcludeBlacklistedFiles"as last entry in the
php vendor/bin/prooph-analyzer project:analyzeand watch the generated output file
If this is too much work right now and you only want to see the result: prooph_message_flow.json