7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WordPress JSON REST APIの開発手法をパクってCIのベストプラクティスを覚える

Last updated at Posted at 2015-07-04

概要

スクリーンショット 2015-07-04 10.54.58.png

WordPress JSON REST APIのリポジトリにはWordPressプラグイン開発のベストプラクティスとも言えるCI環境が整ってます。これを自分の開発環境にも適用してみました

以下、WordPress JSON REST APIの開発で使用されているツールをいくつか紹介します

PHP Code Sniffer

スクリーンショット 2015-07-04 11.05.51.png
正しくコーディング規約が守られているかをチェックするためのツールです。問題があれば自動でコードを修復してくれる機能もあります。

WordPress JSON REST APIはWordPress Coding Standardsを使ってWordPressのコーディング規約をチェックしています。

スクリーンショット 2015-07-04 11.26.56.png
実行するとこんな感じです。これはエスケープ漏れっすね。esc_html_eやesc_attr_e関数をつかって出力時はエスケープしなさい!と怒られています。

その他にも、nonceが設置されてなかったら、CSRFの危険があると指摘してくれたりと、至れり尽くせりです。
コーディング規約もWordPress.com VIP用の規約なんかもあります。
WordPress.com VIP code-review-what-we-look-for

スクリーンショット 2015-07-04 11.42.18.png
これを有効化するとposts_per_pageに-1を指定したり、独自のSQLを発行するだけで怒られてしまいます。

確かに提供するホスティングサービス上で好きなSQLを発行されてDBに負荷かけるのはやめて欲しい気持ちはわかりますが、えらい厳しいっすね。

PHPUnit

スクリーンショット 2015-07-04 12.31.19.png
定番のユニットテストのツールっすね。

Make WordPress Core
WP-CLI+PHPUnitを使ったWordPressプラグインのユニットテスト(1)
使い方は上記に詳しく説明されてます。

PHPLint

http://www.icosaedro.it/phplint/
PHPの文法の構文チェックをしてくれるツールです。

Scrutinizer

スクリーンショット 2015-07-04 11.52.42.png
https://scrutinizer-ci.com/

これはTravis CIと同様のCIサービスです。ざっくり言えばコード全体を解析してイケてるコードかどうか点数をつけてくれます。
ちなみに僕の公開しているプラグインはこんな感じ。
https://scrutinizer-ci.com/g/horike37/wp-syndicate/

自動でパッチを作ってくれたり、ここからGithubにissueを立ててくれたり色々やってくれます

自分のプラグインにこれらのツールを入れる

https://travis-ci.org/horike37/wp-syndicate/jobs/69370112
このあたりのツールを入れてTravis CIを回します。
まあ、ここまで細かくチェックしてたら、そうそうバグやセキュリティホールを誤って仕込んでしまうってことはなくなりますね。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?