最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP应用代码复杂度检测使用方法
时间:2026-09-23 10:00:02 编辑:袖梨 来源:一聚教程网
正文
如果说你想知道一个 PHP 项目的代码复杂度是什么样子的,我推荐你可以使用phploc和PhpMetrics来检测一下。
使用 phploc
这是一个标准的 composer package,不过我推荐大家可以直接使用 composer 全局安装:
composer global require 'phploc/phploc=*'
然后安装完毕,你就可以使用phploc命令来检测你的代码复杂度了:
phploc ./app
比如上面这行代码就是检测你的项目中app/目录的代码复杂度;如果是一个 Laravel 的项目的话,大概会是这个样子的结果输出:
phploc 3.0.1 by Sebastian Bergmann.Directories 14Files72Size 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%)Classes656 (69.05%) Average Class Length9Minimum Class Length 0Maximum Class Length84 Average Method Length 2Minimum Method Length0Maximum Method Length21Functions0 (0.00%) Average Function Length0Not in classes or functions294 (30.95%)Cyclomatic Complexity Average Complexity per LLOC 0.10 Average Complexity per Class2.33Minimum Class Complexity 1.00Maximum Class Complexity 15.00 Average Complexity per Method1.41Minimum Method Complexity 1.00Maximum Method Complexity 6.00Dependencies Global Accesses0Global Constants 0 (0.00%)Global Variables 0 (0.00%)Super-Global Variables0 (0.00%) Attribute Accesses436Non-Static 436 (100.00%)Static0 (0.00%) Method Calls 570Non-Static 412 (72.28%)Static 158 (27.72%)Structure Namespaces15 Interfaces 0 Traits 0 Classes72Abstract Classes 0 (0.00%)Concrete Classes72 (100.00%) Methods 233Scope Non-Static Methods226 (97.00%) Static Methods 7 (3.00%)Visibility Public Methods194 (83.26%) Non-Public Methods39 (16.74%) Functions 24Named Functions 0 (0.00%)Anonymous Functions 24 (100.00%) Constants 0Global Constants 0 (0.00%)Class Constants 0 (0.00%)
不过你可能也感觉到,这个 phploc 的一大不便之处就是,目前来说,他还不能把相关的测试结果可视化或者说自定义检测的最高复杂度。所以,PhpMetrics 就应运而生了。
使用 PhpMetrics
首先需要说明的是,PhpMetrics可以更深入到你的代码中,并且会生成一个 html 文件作为分析的结果,这样我们查看检测结果就会非常的直观。
安装PhpMetrics也是可以直接 composer 全局安装:
composer global require 'phpmetrics/phpmetrics'
安装完毕之后,可以这样来运行命令分析代码复杂度:
phpmetrics --report-html=report.html ./app
等待phpmetrics运行结束,用 Chrome 打开report.html就可以查看相对应的结果,大概是这个样子: