220
226

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPの静的コード解析ツール『PHPMD』を使ってみた。

Last updated at Posted at 2014-08-28

コードレビューしてもらう前に、静的コード解析をして事前に問題点の修正を行いたいと思ったので使ってみました。

PHPMDとは

Hudson+phpmdでPHPコードの問題を自動検出する方法 | Ryuzee.comに記載されているのは以下のような内容です。

phpmdはPHP Mess Ditectorの略で、PHPコードの潜在的なバグになりそうな箇所や実装上の問題を検出してくれるツールである。例えば未使用の変数の指摘、多数のpublicメソッドのある巨大クラスの検出、一文字変数等もこのツールで検出可能だ。

インストール手順

composerを利用します。

composer.json
{
    "require-dev": {
        "phpmd/phpmd" : "*"
    }
}

インストールして、パスを通します。

php composer.phar install
sudo ln -s /vagrant/vendor/phpmd/phpmd/src/bin/phpmd /usr/bin/phpmd
sudo chmod ugo+x /usr/bin/phpmd

使い方

# phpmd [ファイル名|ディレクトリ] [レポートフォーマット(text or xml)] [ルール]

引数に設定するルールについては以下となります。

  • codesize:循環的複雑度などコードサイズ関連部分を検出するルール
  • controversial:キャメルケースなど議論の余地のある部分を検出するルール
  • design:ソフトの設計関連の問題を検出するルール
  • naming:長すぎたり、短すぎたりする名前を検出するルール
  • unusedcode:使われていないコードを検出するルール

複数確認したい場合、カンマ区切りで利用するようです。

$ phpmd test.php text codesize,controversial

動作確認

以下のファイルを用意します。

phpmdtest.php
<?php

class PhpMdTest
{
    public function test_function($param_string)
    {
        print "Hello World!!" . $param_string . "\n";
    }
}

$hoge_fuga = new PhpMdTest();
$hoge_fuga->test_function("( ゚д゚ )クワッ!!");

このファイルをphpmdを使って確認します。

$ phpmd phpmdtest.php text codesize,controversial,design,naming,unusedcode

/vagrant/test phpmdtest.php:5	The method test_function is not named in camelCase.
/vagrant/test phpmdtest.php:5	The parameter $param_string is not named in camelCase.
/vagrant/test phpmdtest.php:5	The variable $param_string is not named in camelCase.

指摘された内容を基に直してみます。

phpmdtest.php
<?php

class PhpMdTest
{
    public function testFunction($paramString)
    {
        print "Hello World!!" . $paramString . "\n";
    }
}

$hoge_fuga = new PhpMdTest();
$hoge_fuga->testFunction("( ゚д゚ )クワッ!!");

このファイルをphpmdを使って再度確認します。

$ phpmd phpmdtest.php text codesize,controversial,design,naming,unusedcode

特に何も表示されなくなりました。

作ってて何となく不安になった場合とか、プロジェクトに自分しかいない場合はこちらを試すのも良いのではないしょうか。

参考にしたURL

PHPMDが使えるSaaS

220
226
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
220
226

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?