PHP Depend Source Code Analyzerの詳細

画像 Habréのレビューの1つで、PHP Dependコードアナライザーが既に言及されています( http://pdepend.org/ )。 この記事では、その使用と結果の解釈の小さな例を検討したいと思います。



設置



それでは、インストールから始めましょう。 PHP Dependを使用するには、PEARが必要です。



pdependチャンネルをpearに登録します。

94:bin sergeypanarin$ ./pear channel-discover pear.pdepend.org

Adding Channel "pear.pdepend.org" succeeded

Discovery of channel "pear.pdepend.org" succeeded









インストール:

94:bin sergeypanarin$ ./pear install pdepend/PHP_Depend-beta

Did not download optional dependencies: pecl/imagick, use --alldeps to download automatically

pdepend/PHP_Depend can optionally use package "pecl/imagick" (version >= 2.2.0b2)

downloading PHP_Depend-0.9.9.tgz ...

Starting to download PHP_Depend-0.9.9.tgz (291,705 bytes)

.............................................................done: 291,705 bytes

install ok: channel://pear.pdepend.org/PHP_Depend-0.9.9











インストールを確認します。

94:bin sergeypanarin$ ./pdepend --version

PHP_Depend 0.9.9 by Manuel Pichler









アナライザー自体のソースコードでテスト実行を開始します。

94:bin sergeypanarin$ ./pdepend --summary-xml=/Users/sergeypanarin/PDepend/summary.xml --jdepend-chart=/Users/sergeypanarin/PDepend/jdepend.svg --overview-pyramid=/Users/sergeypanarin/PDepend/pyramid.svg /Users/sergeypanarin/PEAR/PEAR/PHP/Depend

PHP_Depend 0.9.9 by Manuel Pichler



Parsing source files:

............................................................ 60

............................................................ 120

................................. 153



Executing CyclomaticComplexity-Analyzer:

............................................................ 1200

...... 1335



Executing ClassLevel-Analyzer:

............................................................ 1200

1204



Executing CodeRank-Analyzer:

........ 180



Executing Coupling-Analyzer:

............................................................ 1200

................. 1545



Executing Dependency-Analyzer:

......................................................... 1160



Executing Hierarchy-Analyzer:

............................................................ 1200

........ 1370



Executing Inheritance-Analyzer:

...................... 443



Executing NodeCount-Analyzer:

........................................................ 1123



Executing NodeLoc-Analyzer:

............................................................ 1200

... 1276



Executing NPathComplexity-Analyzer:

............................................................ 1200

...... 1335



Generating pdepend log files, this may take a moment.



Time: 00:27; Memory: 48.00Mb







結果のファイルはここからダウンロードできます-results_0.zip



結果の解釈



結果の構成には3つのファイルが含まれます。

  1. summary.xml-完全なソース分析結果
  2. jdepend.svg
  3. pyramid.svg


最後の2つのファイルについて詳しく説明します。

jdepend.svg


画像

各「ボール」には、特定のパッケージフォルダーのファイルが表示されます(svgファイルでは、ボールにカーソルを合わせると、パッケージ名のツールチップがポップアップ表示されます)。 ボールのサイズは、パッケージ内の抽象クラスと特定クラスの数によって決まります。



x軸は抽象化比を表し、y軸は不安定性比を表します。

直線は、これらの係数間の最適な比率を表します。



抽象化率(A)は、分析されたパッケージ内のクラスの総数に対する抽象クラスおよびインターフェースの数の比率です。 0から1の値を取ります。0の場合、1が絶対抽象の場合、パッケージは完全に特定です。



求心性結合(Ca)は、現在のパケットのクラスに依存するパケットの数です。



遠心接続の係数 (遠心性​​結合、Ce)-現在のパッケージのクラスが依存するパケットの数。



不安定性係数 (不安定性比、I)は、遠心性結合係数と結合係数の合計との比です:I = Ce /(Ce + Ca)。 変更に対するパッケージの復元力を示します。 0から1の値を取ります。0の場合、絶対に安定したパッケージと見なされます(他のパッケージにまったく依存しない)、1が絶対に不安定な(他のパッケージに依存しない完全に依存するパッケージ)と見なされます。



pyramid.svg


画像



データはピラミッドの形で表示されます。これは、その外面に、下のレベルと現在のレベルからの特性の値の比として得られる係数があるためです。 係数の値は、低、中、高の値の範囲に入るかどうかに応じて「色付き」です。



つまり、たとえば、0.176 = CYCLO / LOCです。



使用されている略語について詳しく説明します。



左側:

CYCLO (Cyclomatic Complexity)-パケットの循環的複雑度(if、for、foreachなどのコード内の分岐数に基づく)。

LOC (コードの行)-コードの行数。

NOM (メソッドの数+関数)-クラスメソッドの数+関数の数。

NOC (クラスの数)-クラスの数。

NOP (パッケージ数)-パケットの数。

AHH (平均階層の高さ)-階層の平均の深さ。

AND (派生クラスの平均数)-派生クラスの平均数。



右側に:

FANOUT (呼び出されたクラスの数)-クラスの使用数(明らかに、クラスオブジェクトの作成数)。

CALLS (操作呼び出しの数)-メソッドおよび関数呼び出しの数。



PSメリークリスマスと新年あけましておめでとうございます!



All Articles