LoginSignup
0
0

More than 1 year has passed since last update.

【Composer】PMPMDの導入

Posted at

はじめに

目次

  • PHPMDとは

    • 主な機能
  • 導入方法

  • Ruleset

    • ルールセットの例
  • composer scripts

    • composer.json に追加
  • おわりに

  • 参考文献

PHPMDとは

バグやバグの温床になりそうなコードを教えてくれる優れもの。
コマンドを打ったり Circle CI などを導入すれば push したときに自動でチェックしてくれるようになるので便利です。

主な機能

・バグの検知
・汚いコードの検知
・複雑なコードの検知
・使用していない引数や関数の検知

導入方法

composer を導入してから 「phpmd」 を導入していきます。(composer 導入方法はこちら)

ターミナル
composer require "phpmd/phpmd=@stable" --dev 

これで phpmd を使うことができるようになりました。
早速使用してみます。

チェックしたいルールを引数に書きます。

ターミナル

./vendor/bin/phpmd [チェックしたいファイル] [フォーマット] [ルール]

# 例えば
./vendor/bin/phpmd sample.php text cleancode,codesize,controversial,design,naming,unusedcode

使用はできますが、なんだか長くて使い勝手が悪いですね。

そこでルールを設定ファイルとして定義します。

Ruleset

自分が決めたルールでコードをチェックできるようになります。
設定ファイルを作成することで毎回ルールをコマンドに入れて打たなくても良いようになります。

ルートディレクトリで設定ファイルを作成します。

touch phpmd.xml

ルールセットの例

phpmd.xml
<?xml version="1.0"?>
<ruleset name="My first PHPMD rule set"
          xmlns="http://pmd.sf.net/ruleset/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0
                        http://pmd.sf.net/ruleset_xml_schema.xsd"
          xsi:noNamespaceSchemaLocation="
                        http://pmd.sf.net/ruleset_xml_schema.xsd">
  <description>
    My custom rule set that checks my code...
  </description>
  <rule ref="rulesets/codesize.xml" />
  <rule ref="rulesets/cleancode.xml" />
  <rule ref="rulesets/controversial.xml" />
  <rule ref="rulesets/design.xml" />
  <rule ref="rulesets/naming.xml" />
  <rule ref="rulesets/unusedcode.xml" />
</ruleset>

これで設定ファイルを作成してチェックしたいルールを定義することができたので使用してみます。

ターミナル
./vendor/bin/phpmd . text phpmd.xml --suffixes php --exclude vendor

--suffixes はどのファイルをチェックするのか。
--exclude はどのファイルを除くのか。

というオプションを指定しております。

もっと使いやすくするために composer に登録し簡単にコマンドを打てるようにしていきます。

composer scripts

composer.json に追加

composer.json
    "scripts": {
        "phpmd": "./vendor/bin/phpmd . text phpmd.xml --suffixes php --exclude vendor"
    }
ターミナル
composer phpmd

簡単にチェックできるようになりました。

おわりに

一段落するごとにコマンドを打ってチェックしてみると早い段階でバグになりそうなところをチェックすることができるので導入してみてはどうでしょうか。

参考文献

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