ウノウラボ by Zynga Japan: PHPで利用出来るテストと開発に便利なツール

今日はテストや普段の開発に便利なツールのご紹介をしたいと思います。PHP限定のツールですので、ご了承下さい。

ZyngaJapanでは、昨日リニューアルオープンした「ファームビレッジ」でも、Jenkins(旧Hudson)によるCIを行って開発しており、TDDやJenkinsでのCIを利用する文化がだんだんと浸透してきています。Jenkinsのプラグインとして利用できるものも多くありますが、当然ながらコマンドラインからも利用出来ますので、コミット前に自分のコードをチェックすることもできます。

phpcpd

コードの中でコピー&ペーストで記述されている部分を検出してくれます。
どの程度の重複から検出するかを柔軟に設定できるので、まず大きな部分から修正するなど判断ができ便利です。

$ phpcpd /path/to/projectphpcpd @package_version@ by Sebastian Bergmann.Found 13 exact clones with 339 duplicated lines in 17 files:  - hoge/fuga/Foo.php:55-104    hoge/fuga/Bar.php:85-1340.50% duplicated lines out of 68425 total lines of code.Time: 10 seconds, Memory: 33.00Mb

phpdcd

どこからもコールされていないメソッドなどを検出してくれます。リファクタリング対象として確認に役立ちます。

$ phpdcd /path/to/projectphpdcd 0.9.2 by Sebastian Bergmann.  - Foo::execute()    declared in Foo.php:42  - Bar::getActionName()    declared in Bar.php:27  - Hoge::execute()    declared in Hoge.php:34

phploc

以下のようにphpファイルの構成要素を算出してくれます。(数字は全てダミーです)

$ phploc /path/to/projectphploc @package_version@ by Sebastian Bergmann.Directories:                                        999Files:                                             9999Lines of Code (LOC):                             999999  Cyclomatic Complexity / Lines of Code:           0.01Comment Lines of Code (CLOC):                     99999Non-Comment Lines of Code (NCLOC):               999999Namespaces:                                           9Interfaces:                                          99Classes:                                            999  Abstract:                                          99 (9.99%)  Concrete:                                         999 (99.99%)  Average Class Length (NCLOC):                     999Methods:                                           9999  Scope:    Non-Static:                                    9999 (99.99%)    Static:                                           9 (9.99%)  Visibility:    Public:                                        9999 (99.99%)    Non-Public:                                     999 (99.99%)  Average Method Length (NCLOC):                     99  Cyclomatic Complexity / Number of Methods:       9.99Anonymous Functions:                                 99Functions:                                            9Constants:                                          999  Global constants:                                   9  Class constants:                                  999

phpmd

if文のネスト階層数などの複雑さ、短すぎる、または長すぎる変数名や、使われていない変数の検出など様々な条件に応じて検出を行ってくれます。

$ phpmd /path/to/project text codesize,unusedcode,naming/path/to/project/hoge/huga/AAA.php:76   Avoid unused local variables such as '$foo'./path/to/project/hoge/huga/AAA.php:129  Avoid unused local variables such as '$bar'./path/to/project/hoge/huga/AAA.php:185  Avoid unused local variables such as '$foo'./path/to/project/hoge/huga/BBB.class.php:29    Too many fields/path/to/project/hoge/huga/foo/CCC.php:20 Avoid variables with short names like $a/path/to/project/hoge/huga/foo/CCC.php:20 Avoid variables with short names like $b/path/to/project/hoge/huga/foo/EEE.php:5     The method create() has a Cyclomatic Complexity of 12./path/to/project/hoge/huga/foo/EEE.php:5     The method create() has an NPath complexity of 288./path/to/project/hoge/huga/foo/FFF.php:10     Avoid unused local variables such as '$type'./path/to/project/hoge/huga/foo/GGG.php:7    Avoid unused private fields such as '$object'./path/to/project/hoge/huga/bar/HHH.php:64  Avoid unused parameters such as '$status'./path/to/project/hoge/huga/bar/HHH.php:74  Avoid unused private methods such as 'setStatus'./path/to/project/hoge/huga/bar/JJJ.php:26    Avoid unused parameters such as '$status'./path/to/project/hoge/huga/bar/KKK.php:3    This class has too many methods, consider refactoring it./path/to/project/hoge/huga/bar/KKK.php:13   Avoid unused parameters such as '$status'./path/to/project/hoge/huga/bar/LLL.php:44    Avoid unused parameters such as '$status'.

上記はJenkinsのプラグインとして使えるものもありますので、是非検討してみてはいかがでしょうか。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中