如果我对我的一个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的输出分析代码库?
答案 0 :(得分:9)
低圈复杂度好,高度差; 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
总的来说,我很想使用公共/私人,非静态/静态和混凝土/抽象的80:20规则;但很大程度上取决于你实际编码的内容
可能更重要的是Cyclomatic Complexity / Methods of Methods ...我不喜欢这个数字太高;但是如果它高于平均值2.5,我会更加密切地关注phpmd统计数据