background image

▲点击查看大图

  

PHP Depend

  

PHP Depend(http://pdepend.org/)是一个 PHP 中静态代码分析的工具。它可以用来检查你

PHP 项目中的代码规模和复杂程度。安装方法如下:

  

sudo pear channel-discover 

pear.pdepend.org

  

sudo pear install pdepend/PHP_Depend-beta

  使用的一个例子如下:
  

pdepend --jdepend-xml=../jdepend.xml --jdepend-chart=../dependencies.svg --overview-

pyramid=../overview-pyramid.svg
  上面会生成一个

XML 文件,两个 SVG 的图形文件。其中 XML 文件说明了项目中各

PHP 文件的互相依赖调用(引用)情况及每个方法、函数,类的代码行,一个例子如下:
<?xml version=”1.0” encoding=”UTF-8”?>
<metrics noc=”3” nof=”0” noi=”0” nom=”6”>
<package name=”+

global

” noc=”17” nof=”0” noi=”0” nom=”237”>

<

class

 name=”data_container”nom=”55”>

<

file

 name=”/home/

case

-study/libs/data/container.php”/>

</

class

>

<

class

 name=”data_download” nom=”10”>

<

file

 name=”/home/

case

-study/libs/data/download.php”/>

</

class

>

  其中的

noc 含义是类的代码的行书,nof 为函数的代码行数,noi 为接口代码行数,

nom 为方法 method 代码行数。
  接下来我们来看下产生的一张

SVG 图,该图如下所示:

  这张图
的反映了项
目中包的依
赖性度量情
况。其基本
理论来源于
Robert C. 
Martin 的论

(http://www.objectmentor.com/resources/articles/oodmetrc.pdf)中所介绍的关于软件中模块依赖
性和稳定性的度量。其中,提到了如下概念:
  

Afferent Couplings (Ca)

  依赖于被分析

package 的其他 package 的数量,用于衡量 pacakge 的职责。

  简单来说,即有多少其他的包或模块调用了被分析的包或模块。
  

Efferent Couplings (Ce)