アイキャッチ画像: デスクの上でパソコンを使用している

本日は Drupal (ドルーパル)プロジェクトで PHP Code Sniffer を使う方法をご紹介してみたいと思います。 今回対象とするエディタは Sublime Text 2 です。

Drupal 開発に Sublime Text 2 と PHP Code Sniffer を使う

はじめに

Drupal とは

このページを見ている方で Drupal をご存知でない方はあまり多くはないかと思いますが、 Drupal についてあまり知らない方はこちらのページなどをご参考にしていただければと思います。

PHP Code Sniffer とは

PHP Code Sniffer とは、 PHP のソースコードのスタイルをチェックするためのライブラリです。 一般にいう「スタイルチェッカ」「リンタ」と呼ばれる種類のツールのひとつです。

PHP Code Sniffer 公式ページ

インストールすると phpcs というコードチェッカ用のコマンドが利用できるようになります。

ちなみに sniff とは「くんくん嗅ぐ」という意味の言葉だそうです。 Code Sniffer で「コードの怪しいところを嗅ぎまわるツール」といった意味合いになるでしょうか。

想定読者

本記事の想定読者は、 Drupal 開発初心者の方、あるいは、 Drupal 開発はしているけれどコーディングスタイルについてまだあまりこだわっていない方です。

Drupal と PHP Code Sniffer

PHP Code Sniffer は汎用的なコードのスタイルチェッカライブラリで、プロジェクトごとに異なるスタイルを差し替えて利用できるツールとなっています。

Drupal にもコミュニティ提案のコーディングスタンダードがあるのですが、それへの準拠度合いをチェックするための Code Sniffer 用ルールファイルも提供されています。 ちなみに、 Drupal 公式サイトともいえる drupal.org にあるのは英語のコーディングスタンダードのみなので、一部日本語に翻訳したりもしています。 よろしければご参考してください。

Sublime Text 2 の場合は Code Sniffer を呼び出してインラインでポイントを確認できるパッケージが用意されているので、コードを書きながら常時スタイルチェックを行うということができます。

では、以下そのセットアップ方法を見て行きましょう。

セットアップ

セットアップの手順は次のとおりです。 順に見ていきます。

  1. PHP Code Sniffer をインストール
  2. Drupal プロジェクト用の PHP Code Sniffer 設定ファイルを追加
  3. Sublime Text 2 の PHP Code Sniffer パッケージをインストール

1. PHP Code Sniffer をインストール

PHP Code Sniffer をインストールします。 pear コマンドを使いましょう。

$ pear install PHP_CodeSniffer

pear コマンドがない場合はまず先に pear をインストールする必要があります。 PEAR のサイトのインストール方法のところなどを参考に先にインストールしておいてください。

Code Sniffer のインストールが無事完了したら次のコマンドでバージョン情報が返ってくるはずです。

$ phpcs --version

私のマシンでは PHP_CodeSniffer version 1.5.5 (stable) by Squiz (http://www.squiz.net) と返ってきました。

ちなみに phpcs コマンドはたとえば次の形で利用することができます。

$ phpcs --standard="スタンダード名" ファイル名

試しに Drupal 7 の php.module をチェックしてみると、次のような出力が標準出力に返ってきます。

FILE: /path/to/modules/php/php.module
--------------------------------------------------------------------------------
FOUND 89 ERROR(S) AND 19 WARNING(S) AFFECTING 73 LINE(S)
--------------------------------------------------------------------------------
   4 | ERROR   | There must be exactly one blank line before the tags in file
     |         | comment
   6 | WARNING | PHP version not specified
   6 | ERROR   | Missing @category tag in file comment
   6 | ERROR   | Missing @package tag in file comment
...

豊富なオプションが用意されているので興味のある方はヘルプドキュメントをご覧になってみてください。

$ phpcs --help

2. Drupal プロジェクト用の PHP Code Sniffer 設定ファイルを追加

続いて Drupal プロジェクト用の Code Sniffer スタンダードファイルを追加します。

コントリビュートモジュールの Coder モジュールに含まれているので Coder モジュール をまるごとダウンロードしましょう。 Drush が入っていれば次のコマンドでダウンロードできます。

$ drush dl coder

Drush コマンドが無い場合は Coder のページから直接 zip ファイルをダウンロードして展開してください。

Coder モジュールをダウンロードしたら、中に Code Sniffer 用のディレクトリがあるのでこれを移動させたりシンボリックリンクを貼ったりして Code Sniffer が認識できる場所にディレクトリを移動させます。

$ mkdir -p ~/local
$ cp -R coder/coder_sniffer ~/local
$ sudo ln -sv ~/local/coder_sniffer/Drupal $(pear config-get php_dir)/PHP/CodeSniffer/Standards

設置が問題なくできたら phpcs-i オプションで確認できるはずです。

$ php -i

無事設置できている場合は次のように Drupal がリストに表示されるかと思います。

The installed coding standards are Drupal, MySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zend

私は上記の手順でセットアップしますが、 Coder モジュールは Composer を使う形でもダウンロード可能とのことです。 そのときの composer.json の設定は次のように書きます。

composer.json:

{
    "require": {
        "drupal/coder": "*"
    }
}

3. Sublime Text 2 の PHP Code Sniffer パッケージをインストール

最後に Sublime Text 2 の PHP Code Sniffer パッケージをインストールします。 パッケージ名は Phpcs です。

Package Control がすでに入っている場合はコマンドパレット( cmd + shift + p )で「 Pacakge Control: Install Pacakge 」を選択して「 Phpcs 」を選択しましょう。

インストールが完了したら Sublime Text → Preferences → Pacakge Settings → PHP Code Sniffer → Settings - User を選択して設定ファイルを開き次の内容を記入します。

{
  "phpcs_execute_on_save": true,
  "extensions_to_execute": ["php", "module", "install", "inc"],
  "phpcs_executable_path": "/path/to/your/php",
  "phpcs_additional_args": {
    "--standard": "Drupal"
  }
}

/path/to/your/php の部分はそれぞれの環境の php コマンドへのパスに変更してください。 php のパスがわからない場合は次のコマンドで調べることができます。

$ which php

あとは、実際に PHP ファイル(拡張子が php module install inc のもの)を Sublime Text で編集して保存すれば、保存する度に Code Sniffer が自動的に走り違反する箇所を指摘してるようになります。

自動チェックを走らせたくない場合は phpcs_execute_on_savetrue の部分を false に変更すれば OK です。

コマンドパレットから「 PHP Code Sniffer: sniff this file 」を選択すれば、保存時にかぎらず好きなタイミングでチェックを走らせることができます。 もちろん、設定次第で対象とするファイル拡張子や利用するスタンダードなどを変更することもできます。

以上です。 いかがだったでしょうか?

今回は PHP Code Sniffer を Drupal プロジェクトで使う( Drupal コーディングスタンダードの準拠チェックを行う)ための設定の手順をかんたんにご紹介しました。 私の場合は、上記の手順に加えて日本語コメントを快適に記述するために 80 文字制限を変更するなどの調整を行っていますが、基本的にはこのまま Code Sniffer のお世話になる形で快適な開発ができています。

Drupal のコーディングスタンダードを実践的に身につけるよいツールなので、導入がまだの方はぜひ利用を検討してみてください。