LoginSignup
10
10

More than 5 years have passed since last update.

PHPMD はヒステリックすぎるので無視しよう

Posted at

PHPMD (PHP Mess Detector) は、PHP のコードを静的解析して、潜在的なバグや無意味なブロックを発見してくれるツールです。
が、しばしば問題ないブロックにもケチをつけてきます。

たとえばこんなコード。

public function setUp() {
    // 警告: Avoid using static access to class 'parent' in method 'setUp'.
    parent::setUp();

    $this->Account = ClassRegistry::init('Account');
}

親クラスの setUp() メソッドを呼んだけで、「静的アクセスするな」と怒られます。じゃあどうやってオーバーライドすればいいんだよ、と思います。メンバ定数にアクセスしようと self:: を使っても出ます。オブジェクト指向を否定してんのか。

@SuppressWarnings アノテーションをクラスの PHPDoc に書くことでこの警告は出なくなりますが、本当に間違った静的アクセスを行っていても無視されるようになってしまいます。困ったもんです。

ほかにも、if-else を使うと下のような警告を出します。

public function step() {
    if ($this->find('count') < 1) {
        $this->foo();
    } else {
        // 警告: The method step uses an else expression. Else is never necessary and you can simplify the code to work without else.
        $this->bar();
    }

「else なんて必要ねえよ。else の必要ない書き方しろよ。」と言ってきます。言いたいことはわかりますが、リファクタリングした結果最もメンテナンス性が高くなるなら、if-else 構文を使っても全然問題ないはずです。else を使うだけで警告レベル High で糾弾するのはいかがなものでしょうか。

まとめ

PHPMD はヒステリーなので、レポート結果をあまり深刻に受け取らないようにしましょう。

参考

10
10
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
10
10