PHP CodeSniffer を使ってWPコーディングスタンダードのエラーをチェック&自動修正しよう [3.x 対応]

0

前回の記事で WordPress コーディングスタンダード (以下 WPCS) の書き方を学んだので、今回は PHP CodeSniffer を使ってエディター内でリアルタイムに構文エラーをチェックする方法を紹介していきます。

スポンサーリンク

PHP CodeSniffer の導入

まずは PHP CodeSniffer を導入します。その前に PHP のインストールが必要になるので、導入されてない方は brew install php70 等でインストールしておいてください。

Brew からでも導入できますが、今回は Composer からインストールします。

$ composer global require "squizlabs/php_codesniffer=*"

でインストールできます。

WPCS のインストール

CodeSniffer をインストール出来たら、次にコーディングスタンダードをインストールします。デフォルトでは PEAR, PHPCS, PSR1, PSR2, Squiz, Zend がインストールされていますが、今回使いたいのは WPCS ですのでそれをインストールします。

$ git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git ~/.composer/vendor/squizlabs/php_codesniffer/Standards/WordPress

Git からファイルをクローンしてきたら、以下のコマンドでインストールします。

$ phpcs --config-set installed_paths ~/.composer/vendor/squizlabs/php_codesniffer/Standards/WordPress

phpcs -i コマンドで追加されたことが確認できます。

WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra and WordPress-VIP

が追加されていることを確認します。

WPCS の種類

  • WordPress - 以下の4つの設定がまとまってるやつです。
  • WordPress-Core - 一番基本のルールセットです。最低限の所って感じ。
  • WordPress-Extra - 上記の Core にさらに拡張ルールを加えたものです。これには Core の内容も含まれています。
  • WordPress-Docs - Doc コメントなど主にコメントの書き方がまとめたルールセットです。
  • WordPress-VIP - WordPress VIP という WP.com の提供する有料サービス (それも CNN レベルの大規模サイトが使うようなやつ) の書き方のルールセットです。普通の開発なら気にしなくていいです。

デフォルトとして設定

普段 WordPress でしか PHP を書かないよって人には、WPCS をデフォルトのコーディング規約として設定しておくのがおすすめです。以下のコマンドから出来ます。

$ phpcs --config-set default_standard WordPress

まずはコマンドラインでチェック

早速書いたコードをコマンドラインでチェックしていきましょう。

以下のコマンドで実行できます。

$ phpcs ファイル名.php

ということでこのような素晴らしいエラー地獄が見えましたね☺️

これを一つずつ手直し… していきたい人は居ないと思うので、PHP Code Beautifier and Fixer、通称 phpcbf を使って自動修正していきます。

早速、

$ phpcbf ファイル名.php

で実行します。

何やら処理中…

処理が終わったらもう一度 phpcs を実行してみましょう。

このように、186あったエラーが47まで減りましたね (それでも多いとか言わない)。

ここからは手動でエラーを確認し修正していていかないといけないわけですが、コマンドラインで毎回コマンドを打ってチェックしていくのは面倒なので、エディター内でインラインで確認で出来るようにしていきましょう。

エディター内で導入

Visual Studio Code

phpcs という拡張機能をインストールします。

ext install phpcs

導入後、settings.json 内に以下を記述してルールセットを指定できます。

"phpcs.standard": "~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/WordPress/phpcs.xml"

ここで "WordPress" を指定してもいいのですが、WordPress ルールセットには WordPress-VIP ルールという不要なものが混入しているので、VIP を除いたカスタムルールを作っておくのがおすすめです。

私はこんな感じで書いて、CodeSniffer ディレクトリ内に保存してます。また、プロジェクトディレクトリ内に phpcs.xml として設置しておくと、プロジェクト単位でデフォルトのコーディングスタンダードが指定出来ます。

<?xml version="1.0"?>
<ruleset name="wpcs-custom">
    <description>A custom WPCS ruleset</description>

    <rule ref="WordPress-Extra" />
    <rule ref="WordPress-Docs" />
    <rule ref="WordPress-VIP">
        <!-- ...Except for VIP-specific things -->
        <exclude name="WordPress.VIP.FileSystemWritesDisallow" />
        <exclude name="WordPress.VIP.RestrictedFunctions" />
        <exclude name="WordPress.VIP.RestrictedVariables" />
        <exclude name="WordPress.VIP.SuperGlobalInputUsage" />
        <exclude name="WordPress.VIP.ValidatedSanitizedInput" />
        <exclude name="WordPress.VIP.DirectDatabaseQuery" />
        <exclude name="WordPress.VIP.OrderByRand" />
    </rule>

    <exclude-pattern>*/node_modules/*</exclude-pattern>
    <exclude-pattern>*/vendor/*</exclude-pattern>
</ruleset>

Atom

Atom では linter-phpcs というプラグインで出来ます。

設定画面にいくと PHPCS 用の設定が2つあり、PHPCS へのパスと、デフォルトのコーディングスタンダードを設定することになります。PHPCS のパスは $ which phpcs で取得できます。コーディングスタンダードは先に触れたカスタムルールセットを用意しておくといいでしょう。

PhpStorm

PhpStorm はもっていないので Jetbrains のドキュメンテーション (英語) あたりを参考に設定してください。

最近 WP.org 上でテーマレビューを始めたのですが、あまりにも WPCS に従って書いている人が少なくて寂しいです。是非 書き方を学び、PHPCS の設定をし、読みやすいコード[誰にとって?] を書きましょう!

ミルコン@管理人

しがない学生の WordPress デベロッパー。最近は WordPress テーマの作成や翻訳などやってます。フロントが好き。Twitter: @mirucons

スポンサーリンク

シェアする

コメントを残す

メールアドレスが公開されることはありません。

スパム対策の為、日本語が含まれない投稿は無視されますのでご注意ください。