首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phploc输出解释

phploc输出解释
EN

Stack Overflow用户
提问于 2012-12-18 16:49:09
回答 1查看 2.5K关注 0票数 6

如果我对我的一个phploc项目(开放源码)运行,我会看到这个输出。

代码语言:javascript
复制
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

通过这种静态分析,如何判断这个代码库是好的还是坏的?或者写得好还是写得不好?

  1. 如果太低或太高,圈复杂度是好的吗?
  2. 拥有3.57%抽象类是好是坏?
  3. 14.09%静态方法在OOP代码库中,应该更低一点吗?
  4. 没有使用名称空间,是好还是坏?

最后一个问题如何分析一个带有phploc输出的代码库?

EN

回答 1

Stack Overflow用户

发布于 2012-12-18 16:51:50

低圈复杂度是好的,高的是坏的;statics are hard to unit test,但是(虽然有些人认为它们和eval一样糟糕),它们确实起到了一定的作用;phploc的其他度量是可以解释的。

但是,您确实应该与pdependphpmd等其他工具一起使用phploc。and站点特别解释了所使用的许多分析方法,而phpmd输出是非常清楚的。

编辑

作为比较,我目前正在处理的代码(https://github.com/MarkBaker/PHPGeodetic):我对抽象/具体类的级别相当满意,尽管它可能会更高一些;我有一个具有较高圈复杂度的方法,它足以使这些数字倾斜一点,但它不容易被分解;还有一些较长的方法(但不足以触发phpmd警告)。

代码语言:javascript
复制
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规则;但这在很大程度上取决于您实际编码的内容。

也许更重要的是循环复杂度/方法的数量..。我不喜欢这个数字太高,但如果它超过2.5的平均值,我将仔细观察phpmd的统计数据。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13937676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档