micoli / symfony-cartography
Symfony cartography 扩展包
v1.0.0
2017-02-07 18:30 UTC
Requires
- php: >=5.5.9
- ext-pdo_sqlite: *
- doctrine/doctrine-bundle: ^1.6
- doctrine/doctrine-cache-bundle: ^1.2
- doctrine/doctrine-fixtures-bundle: ^2.2
- doctrine/orm: ^2.5
- erusev/parsedown: ^1.5
- ezyang/htmlpurifier: ^4.7
- incenteev/composer-parameter-handler: ^2.0
- sensio/distribution-bundle: ^5.0
- sensio/framework-extra-bundle: ^3.0.2
- symfony/monolog-bundle: ^3.0
- symfony/polyfill-apcu: ^1.0
- symfony/swiftmailer-bundle: ^2.3
- symfony/symfony: ^3.2
- twig/extensions: ^1.3
- twig/twig: ^1.28
- white-october/pagerfanta-bundle: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- phpunit/phpunit: ^4.8 || ^5.0
- sensio/generator-bundle: ^3.0
- symfony/phpunit-bridge: ^3.0
This package is auto-updated.
Last update: 2024-09-24 19:19:08 UTC
README
此扩展包的目的是
- 分析您的项目代码库(类、类分类、对其他服务/类的调用方法)
- 绘制从特定类::方法到所有可能方法的调用图。请注意,此图是通过静态分析计算的,它不是特定执行期间调用的类:方法,而是从和到类:方法的全部可能调用
要求
- PHP 8.1.0 或更高版本;
- 启用 PDO-SQLite PHP 扩展以进行开发;
安装
composer require --dev micoli/symfony-cartography
- 在
config\bundles.php
中添加一行
Micoli\SymfonyCartography\SymfonyCartographyBundle::class => ['dev' => true, 'test' => true],`
- 在
config/routes.yaml
中添加一条路由
when@dev:
_symfony_cartography:
resource: '@SymfonyCartographyBundle/Resources/config/routes.yaml'
prefix: /_cartography
- 并创建
config/packages/symfony_cartography.yaml
symfony_cartography:
enabled: true
sources:
- '%kernel.project_dir%/src'
filters:
classes:
rules:
- '+App\' # all classes in namespace 'App\' will be excluding
- '-App\Domain\DataFixtures' # except those starting by 'App\Domain\DataFixtures'
method_calls:
exclude_loopback: true #display sameClasse to sameClasse arrows
rules:
- '-Twig\' # do not display call towards classes in 'twig' namespace
- '-ReflectionFunctionAbstract'
- '-Doctrine\'
- '-Symfony\'
- '-Webmozart\'
- '-Psr\'
messenger_dispatchers: # Class/Method used to wire event trough messenger buses
- class: App\Infrastructure\Bus\MessengerCommandBus
method: dispatch
- class: App\Infrastructure\Bus\MessengerEventDispatcher
method: dispatch
graph:
engine: visjs # visjs|plantuml|cytoscape
engine_uri: https://kroki.io/plantuml/svg
# engine_uri: http://127.0.0.1:8080/svg # if local plantuml server
withMethodDisplay: false # display methods in classes
withMethodArrows: false # if disabled, only one arrow from a class to another is draw
leftToRightDirection: false # if disabled graph is drawn top to bottom, else it is draw left To Right
colors: # colors used in graph
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::undefined
color: '#033270'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::doctrineEntity
color: '#1368aa'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::controller
color: '#4091c9'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::messengerCommandHandler
color: '#9dcee2'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::messengerEventListener
color: '#fedfd4'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::messengerEvent
color: '#f29479'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::messengerCommand
color: '#f26a4f'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::symfonyConsoleCommand
color: '#ef3c2d'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::symfonyEventListener
color: '#cb1b16'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::doctrineRepository
color: '#65010c'
- class: !php/enum Micoli\SymfonyCartography\Service\Categorizer\ClassCategory::symfonyEvent
color: '#f29479'
使用方法
-
要清除 Psalm 内部缓存并刷新分析后的代码库,请运行
bin/console code:cartography --force
Analysing
enrichedClasses: 56
methods: 25
method calls: 73
interfaceImplements: 34
classInterfaces: 35
Analyse done
-
要使用本地 plantuml 实例,请运行
docker run -d -p 8080:8080 plantuml/plantuml-server:jetty
并在config/packages/symfony_cartography.yaml
中设置symfony_cartography: graph: engine: plantuml engine_uri: http://127.0.0.1:8080/svg
-
否则,要使用 kroki 的公共实例
symfony_cartography: graph: engine: plantuml engine_uri: https://kroki.io/plantuml/svg
-
测试
运行以下命令以执行测试
$ make tests-all
待办事项
- 管理 symfony 事件和处理器
- 管理 symfony 服务
- 从接口间接或使用服务定义
- 获取调用树和调用树