如果我对我的一个 PHP 项目(开源)运行 phploc
,我会看到这个输出。
phploc 1.6.4 by Sebastian Bergmann.
Directories: 3
Files: 33
Lines of Code (LOC): 2358
Cyclomatic Complexity / Lines of Code: 0.08
Comment Lines of Code (CLOC): 903
Non-Comment Lines of Code (NCLOC): 1455
Namespaces: 0
Interfaces: 3
Classes: 28
Abstract: 1 (3.57%)
Concrete: 27 (96.43%)
Average Class Length (NCLOC): 49
Methods: 149
Scope:
Non-Static: 128 (85.91%)
Static: 21 (14.09%)
Visibility:
Public: 103 (69.13%)
Non-Public: 46 (30.87%)
Average Method Length (NCLOC): 9
Cyclomatic Complexity / Number of Methods: 1.69
Anonymous Functions: 0
Functions: 3
Constants: 9
Global constants: 0
Class constants: 9
通过这个静态分析,如何判断这个代码库是好是坏?或者写得好坏?
- 圈复杂度太低或太高都好吗?
- 拥有
3.57%
抽象类是好是坏? 14.09%
静态方法。它应该在 OOP 代码库上更低吗?- 没有使用命名空间,这是好是坏?
最后一个问题如何使用 phploc 的输出分析代码库?
最佳答案
圈复杂度低好,高不好; statics are hard to unit test ,但是(虽然有些人认为它们和 eval 一样糟糕)它们确实有目的; phploc 的其他措施有待解释。
但是您真的应该将 phploc 与其他工具一起使用,例如 pdepend , 和 phpmd . pdepend 站点特别解释了很多使用的分析,phpmd 输出非常不言自明
编辑
作为比较,我目前正在编写的代码 ( https://github.com/MarkBaker/PHPGeodetic ):我对抽象/具体类的级别相当满意,尽管它可以更高一点;我有一种方法具有更高的圈复杂度,足以使这些数字稍微倾斜,但不容易分解;和一些较长的方法(但不足以触发 phpmd 警告)。
Lines of Code (LOC): 4003
Cyclomatic Complexity / Lines of Code: 0.07
Comment Lines of Code (CLOC): 1580
Non-Comment Lines of Code (NCLOC): 2423
Namespaces: 0
Interfaces: 1
Traits: 0
Classes: 25
Abstract: 4 (16.00%)
Concrete: 21 (84.00%)
Average Class Length (NCLOC): 103
Methods: 160
Scope:
Non-Static: 129 (80.62%)
Static: 31 (19.38%)
Visibility:
Public: 131 (81.88%)
Non-Public: 29 (18.12%)
Average Method Length (NCLOC): 16
Cyclomatic Complexity / Number of Methods: 2.12
Anonymous Functions: 2
Functions: 0
Constants: 66
Global constants: 0
Class constants: 66
总的来说,我很想在公共(public)/私有(private)、非静态/静态和具体/抽象方面使用 80:20 规则;但很大程度上取决于您实际编码的内容
可能更重要的是圈复杂度/方法数量...我不喜欢这个数字太高;但如果它上升到平均水平 2.5 以上,我将更仔细地查看 phpmd 统计信息
关于phploc 输出说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13937676/