原文来自:https://www.codecasts.com/blo...php
若是说你想知道一个 PHP 项目的代码复杂度是什么样子的,我推荐你能够使用 phploc 和 PhpMetrics 来检测一下。html
这是一个标准的 composer package,不过我推荐你们能够直接使用 composer 全局安装:git
composer global require 'phploc/phploc=*'
而后安装完毕,你就能够使用 phploc
命令来检测你的代码复杂度了:github
phploc ./app
好比上面这行代码就是检测你的项目中 app/
目录的代码复杂度;若是是一个 Laravel 的项目的话,大概会是这个样子的结果输出:app
phploc 3.0.1 by Sebastian Bergmann. Directories 14 Files 72 Size Lines of Code (LOC) 3748 Comment Lines of Code (CLOC) 790 (21.08%) Non-Comment Lines of Code (NCLOC) 2958 (78.92%) Logical Lines of Code (LLOC) 950 (25.35%) Classes 656 (69.05%) Average Class Length 9 Minimum Class Length 0 Maximum Class Length 84 Average Method Length 2 Minimum Method Length 0 Maximum Method Length 21 Functions 0 (0.00%) Average Function Length 0 Not in classes or functions 294 (30.95%) Cyclomatic Complexity Average Complexity per LLOC 0.10 Average Complexity per Class 2.33 Minimum Class Complexity 1.00 Maximum Class Complexity 15.00 Average Complexity per Method 1.41 Minimum Method Complexity 1.00 Maximum Method Complexity 6.00 Dependencies Global Accesses 0 Global Constants 0 (0.00%) Global Variables 0 (0.00%) Super-Global Variables 0 (0.00%) Attribute Accesses 436 Non-Static 436 (100.00%) Static 0 (0.00%) Method Calls 570 Non-Static 412 (72.28%) Static 158 (27.72%) Structure Namespaces 15 Interfaces 0 Traits 0 Classes 72 Abstract Classes 0 (0.00%) Concrete Classes 72 (100.00%) Methods 233 Scope Non-Static Methods 226 (97.00%) Static Methods 7 (3.00%) Visibility Public Methods 194 (83.26%) Non-Public Methods 39 (16.74%) Functions 24 Named Functions 0 (0.00%) Anonymous Functions 24 (100.00%) Constants 0 Global Constants 0 (0.00%) Class Constants 0 (0.00%)
不过你可能也感受到,这个 phploc 的一大不便之处就是,目前来讲,他还不能把相关的测试结果可视化或者说自定义检测的最高复杂度。因此,PhpMetrics 就应运而生了。composer
首先须要说明的是,PhpMetrics 能够更深刻到你的代码中,而且会生成一个 html 文件做为分析的结果,这样咱们查看检测结果就会很是的直观。post
安装 PhpMetrics 也是能够直接 composer 全局安装:测试
composer global require 'phpmetrics/phpmetrics'
安装完毕以后,能够这样来运行命令分析代码复杂度:ui
phpmetrics --report-html=report.html ./app
等待 phpmetrics
运行结束,用 Chrome 打开 report.html
就能够查看相对应的结果,大概是这个样子:spa