本日は Drupal (ドルーパル)プロジェクトで PHP Code Sniffer を使う方法をご紹介してみたいと思います。 今回対象とするエディタは Sublime Text 2 です。
はじめに
Drupal とは
このページを見ている方で Drupal をご存知でない方はあまり多くはないかと思いますが、 Drupal についてあまり知らない方はこちらのページなどをご参考にしていただければと思います。
PHP Code Sniffer とは
PHP Code Sniffer とは、 PHP のソースコードのスタイルをチェックするためのライブラリです。 一般にいう「スタイルチェッカ」「リンタ」と呼ばれる種類のツールのひとつです。
インストールすると phpcs
というコードチェッカ用のコマンドが利用できるようになります。
ちなみに sniff とは「くんくん嗅ぐ」という意味の言葉だそうです。 Code Sniffer で「コードの怪しいところを嗅ぎまわるツール」といった意味合いになるでしょうか。
想定読者
本記事の想定読者は、 Drupal 開発初心者の方、あるいは、 Drupal 開発はしているけれどコーディングスタイルについてまだあまりこだわっていない方です。
Drupal と PHP Code Sniffer
PHP Code Sniffer は汎用的なコードのスタイルチェッカライブラリで、プロジェクトごとに異なるスタイルを差し替えて利用できるツールとなっています。
Drupal にもコミュニティ提案のコーディングスタンダードがあるのですが、それへの準拠度合いをチェックするための Code Sniffer 用ルールファイルも提供されています。 ちなみに、 Drupal 公式サイトともいえる drupal.org にあるのは英語のコーディングスタンダードのみなので、一部日本語に翻訳したりもしています。 よろしければご参考してください。
- Drupal コーディングスタンダード 日本語訳
- Drupal オブジェクト指向 コーディングスタンダード 日本語訳
- JavaScript コーディングスタンダード 日本語訳
- CSS フォーマットガイドライン 日本語訳
Sublime Text 2 の場合は Code Sniffer を呼び出してインラインでポイントを確認できるパッケージが用意されているので、コードを書きながら常時スタイルチェックを行うということができます。
では、以下そのセットアップ方法を見て行きましょう。
セットアップ
セットアップの手順は次のとおりです。 順に見ていきます。
- PHP Code Sniffer をインストール
- Drupal プロジェクト用の PHP Code Sniffer 設定ファイルを追加
- 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_save
の true
の部分を false
に変更すれば OK です。
コマンドパレットから「 PHP Code Sniffer: sniff this file 」を選択すれば、保存時にかぎらず好きなタイミングでチェックを走らせることができます。 もちろん、設定次第で対象とするファイル拡張子や利用するスタンダードなどを変更することもできます。
以上です。 いかがだったでしょうか?
今回は PHP Code Sniffer を Drupal プロジェクトで使う( Drupal コーディングスタンダードの準拠チェックを行う)ための設定の手順をかんたんにご紹介しました。 私の場合は、上記の手順に加えて日本語コメントを快適に記述するために 80 文字制限を変更するなどの調整を行っていますが、基本的にはこのまま Code Sniffer のお世話になる形で快適な開発ができています。
Drupal のコーディングスタンダードを実践的に身につけるよいツールなので、導入がまだの方はぜひ利用を検討してみてください。
募集しています
スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。