micoli/symfony-cartography

Symfony cartography 扩展包

v1.0.0 2017-02-07 18:30 UTC

This package is auto-updated.

Last update: 2024-09-24 19:19:08 UTC


README

tests lint

此扩展包的目的是

  • 分析您的项目代码库(类、类分类、对其他服务/类的调用方法)
  • 绘制从特定类::方法到所有可能方法的调用图。请注意,此图是通过静态分析计算的,它不是特定执行期间调用的类:方法,而是从和到类:方法的全部可能调用

toolbar

要求

  • 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'

使用方法

  • webProfiler 工具栏中,您可以查看当前控制器从调用图的预览 toolbar

  • webProfiler 页面上,有一个新的名为 cartography 的部分 toolbar

  • 要清除 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 服务
  • 从接口间接或使用服务定义
  • 获取调用树和调用树