Mondrian 
Ok guyz, you have a master degree in Graph Theory, you follow Law of Demeter and you live on S.O.L.I.D principles ?
Let's have some Fun ! (^ω^)
What
It is a set of CLI tools to help you to analyse and refactor highly coupled classes. As you know Law of Demeter and S.O.L.I.D guidances, you need your classes loosely coupled. And for this, there is one only rule : ABSTRACTION

This app provides some helpers to add abstraction into concrete classes with minimum pain.
Getting started
Download the PHAR : mondrian.phar
Try to run a simple command with a few files (or a small part of a project)
$ mondrian.phar digraph /home/dev/project
This command produces a DOT file for GraphViz. Other formats are available :
html : interactive graph with the d3.js awesome library
svg : open standard for vector graphics (requires GraphViz)
json : format for d3.js for example
Example with html format
$ php mondrian.php d --ignore=tests --ignore=vendor --format=html ./MyPhpProject/

Note: The generated html file does not require any dependencies nor a connection.
Ecosystem
Running unit tests with PHPUnit
$ phpunit.phar
Building the documentation with phpDocumentor
$ phpDocumentor.phar
Building mondrian.phar from the sources with box2
$ box.phar b
Examples
Default digraph on trismegiste/dokudoki

Which components are bottleneck ?

Reduced graph to LSP violations on trismegiste/prolog

How
Read the concept here
Read the online documentation here
And the API here (not up to date)
Extensible
You can easily add plugins to this tool to make your own algorithm, coloring scheme or new generator. I try to make the API mostly decoupled, re-usable and with great SRP and OCP concerns. Look into the "About" plugin to understand a basic stub of plugin.
Third party
Packages used in this project :
symfony/console for creating CLI app with swag
alom/graphviz for rendering DOT files
symfony/finder for searching files through filesystem
symfony/config for managing yaml configuration without headache
D3.js for graph rendering in html
Phar builded with Box
Special thanks
William Gibson
JS Bach
Dream Theater
MondrianOkguyz:抽象与解耦利器
MondrianOkguyz是一款命令行工具,旨在帮助开发者分析并重构高度耦合的类。它通过增加抽象来降低类间的依赖,遵循单一职责原则与开放封闭原则等软件设计原则。支持多种输出格式如Graphviz DOT文件、HTML交互图等。
121

被折叠的 条评论
为什么被折叠?



