检测 PHP 应用的代码复杂度

JellyBool

JellyBool

如果说你想知道一个 PHP 项目的代码复杂度是什么样子的,我推荐你可以使用 phplocPhpMetrics 来检测一下。

1.使用 phploc

这是一个标准的 composer package,不过我推荐大家可以直接使用 composer 全局安装:

composer global require 'phploc/phploc=*'

然后安装完毕,你就可以使用 phploc 命令来检测你的代码复杂度了:

phploc ./app

比如上面这行代码就是检测你的项目中 app/ 目录的代码复杂度;如果是一个 Laravel 的项目的话,大概会是这个样子的结果输出:

phploc 3.0.1 by Sebastian Bergmann.


Directories                                         14

Files                                               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 就应运而生了。

使用 PhpMetrics

首先需要说明的是,PhpMetrics 可以更深入到你的代码中,并且会生成一个 html 文件作为分析的结果,这样我们查看检测结果就会非常的直观。

安装 PhpMetrics 也是可以直接 composer 全局安装:

composer global require 'phpmetrics/phpmetrics'

安装完毕之后,可以这样来运行命令分析代码复杂度:

phpmetrics --report-html=report.html ./app

等待 phpmetrics 运行结束,用 Chrome 打开 report.html 就可以查看相对应的结果,大概是这个样子:

如果你还有更具体的代码复杂度分析需求,可以看看 phpmd: https://phpmd.org/rules/codesize.html 和 php-depend: https://pdepend.org/documentation/software-metrics/cyclomatic-complexity.html

本文由 JellyBool 创作, 转载和引用遵循 署名-非商业性使用 2.5 中国大陆 进行许可。

共有 2 条评论

meikoul
修改的评论也不能少于六个字哦!
JellyBool 回复 meikoul
修改的评论也不能少于六个字哦!