phploc 输出说明

标签 php code-analysis static-analysis phploc

如果我对我的一个 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

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

  1. 圈复杂度太低或太高都好吗?
  2. 拥有 3.57% 抽象类是好是坏?
  3. 14.09% 静态方法。它应该在 OOP 代码库上更低吗?
  4. 没有使用命名空间,这是好是坏?

最后一个问题如何使用 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/

相关文章:

visual-studio-2012 - Visual Studio 2012 快速代码分析

c++ - 如何计算C++项目中函数的数量?

c++ - 结合 Clang AST

objective-c - 在mac中使用Klocwork分析一个iOS应用

php - 如何使用 PHP 在网站上显示 Facebook 状态提要? (类似于推特提要)

php - 如何设置 PayPal 快速结帐登陆页面计费(借记卡)

php - 这个恶意软件代码完成了什么?

git - 如何使用 IntelliJ IDEA 为 Git 支持的项目禁用预提交代码分析

php - YouTube API v3 : How to get returned 404 (not found) error from PlaylistItems?

php - 在 codeigniter 中的两个日期之间提取数据时出错