環境は Windows。テキストエディタでVSCode を使うこと前提です。

composer をインストールする

PHPのライブラリ管理ツールである「componser」を下記ページのインストーラーを使ってインストールする。
※インストール後のアップデートは普通にComposer-Setup.exeから

https://getcomposer.org/download/

インストールされているか確認

composer about

下記みたいなのが出ればOK
Composer - Dependency Manager for PHP - version 2.1.3
Composer is a dependency manager tracking local dependencies of your projects and libraries.
See https://getcomposer.org/ for more information.

または
composer --version

PHP CodeSniffer(phpcs)をインストール

記述したプログラムがコーディング規約に則って記述されているかチェックしてくれるツール。
先にインストールした composer から インストールする。

グローバルインストールする場合

一人で作業する場合はこれで良いかも。公式ではプロジェクトごとにインストールするのをおすすめされていたように思う。

composer global require squizlabs/php_codesniffer //頭にnmpとかいらないよ。念のため

バージョン確認

phpcs --version

helpコマンド確認

phpcs --help

//下記みたいなのがずらずら出てきたらOK
 Usage: phpcs [-nwlsaepqvi] [-d key[=value]] [--colors] [--no-colors]   [--cache[=<cacheFile>]] [--no-cache] [--tab-width=<tabWidth>]   [--report=<report>] [--report-file=<reportFile>] [--report-<report>=<reportFile>]   [--report-width=<reportWidth>] [--basepath=<basepath>] [--bootstrap=<bootstrap>]   [--severity=<severity>] [--error-severity=<severity>] [--warning-severity=<severity>]   [--runtime-set key value] [--config-set key value] [--config-delete key] [--config-show]   [--standard=<standard>] [--sniffs=<sniffs>] [--exclude=<sniffs>]   [--encoding=<encoding>] [--parallel=<processes>] [--generator=<generator>]   [--extensions=<extensions>] [--ignore=<patterns>] [--ignore-annotations]

インストールされているコーディング規約を確認

phpcs -i

//こんな感じで表示される
The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs and WordPress-Extra

コーディング規約の場所 ※環境によって異なると思うが…

C:\Users\ユーザー名\AppData\Roaming\Composer\vendor\squizlabs\php_codesniffer\src\Standards

当方の環境はすでにWordPressの規約を追加済みだが、自動ではインストールされないので個別に追加する(後述)

WordPressのコーディング規約を追加する

WordPressのコーディング規約は自動ではインストールされないので個別にGithubからダウンロードしてインストールする。
上記の黄色い場所で下記を実行

git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git

PHP_CodeShifferにWordPressのコーディング規約のパスを教えてあげる。
メモ WIndows PowerShell で実行したらいけた。

phpcs --config-set installed_paths C:\Users\ユーザー名\AppData\Roaming\Composer\vendor\squizlabs\php_codesniffer\src\Standards\WordPress-Coding-Standards

追加されているか確認

phpcs -i

//WordPressの規約が出てきたらOK
The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz, Zend, WordPress, WordPress-Core, WordPress-Docs and WordPress-Extra

プロジェクトフォルダにインストールする場合

//プロジェクトルートで実行

//PHP_CodeSnifferインストール
$ composer require --dev squizlabs/php_codesniffer

//WordPressコーディング規約をインストール
$ composer require --dev wp-coding-standards/wpcs

//PHP_CodeSnifferにWordPressコーディング規約を反映
$ ./vendor/bin/phpcs --config-set installed_paths 'vendor/wp-coding-standards/wpcs'

//コーディング規約確認
//WordPressの文字がいくつか追加されてればOK!
$ ./vendor/bin/phpcs -i
The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz, PSR1, PSR12, WordPress, WordPress-Extra, WordPress-Docs and WordPress-Core

//コーディング規約にWordPressを指定
$ ./vendor/bin/phpcs --config-set default_standard WordPress

VSCodeでエラー表示&フォーマットさせる

プロジェクトごとに準拠するコーディング規約を変更したいので、「ユーザー」では無く「ワークスぺース」のsettings.jsonを編集する。
拡張機能との相性もある?みたいで以下が当方環境でうまくいった方法。

PSR2 に準拠する場合

有効にするVSCodeの拡張機能

php cs fixer

プロジェクト(ワークスペース)の settings.json

{
	"php-cs-fixer.executablePath": "~/.vscode/php-cs-fixer-v2.phar",
	"php-cs-fixer.onsave": true,
	"php-cs-fixer.rules": "@PSR2",
	"php-cs-fixer.config": ".php_cs;.php_cs.dist",
	"php-cs-fixer.allowRisky": false,
	"php-cs-fixer.pathMode": "override",
	"php-cs-fixer.exclude": [],
	"php-cs-fixer.autoFixByBracket": true,
	"php-cs-fixer.autoFixBySemicolon": false,
	"php-cs-fixer.formatHtml": false,
	"php-cs-fixer.documentFormattingProvider": true
}

WordPress に準拠する場合

有効にするVSCodeの拡張機能

php-cs-fixerは無効にしておく

  • phpcs・・・コードのエラー表示をしてくれる
  • phpcbf・・・コードを自動整形してくれる

プロジェクト(ワークスペース)の settings.json

{	
	"phpcs.enable": true,
	"phpcs.executablePath": "C:\\Users\\ユーザー名\\AppData\\Roaming\\Composer\\vendor\\bin\\phpcs",
	"phpcs.standard": "./phpcs.xml",
	"phpcbf.enable": true,
	"phpcbf.executablePath": "C:\\Users\\ユーザー名\\AppData\\Roaming\\Composer\\vendor\\bin\\phpcbf.bat",
	"phpcbf.standard": "WordPress",
	"phpcbf.onsave": true,
	"phpcbf.documentFormattingProvider": true
}

WordPressのコーディング規約はそのまま使用するには辛い部分があるのでプロジェクトルートにphpcs.xmlファイルを作成して、除外ルールを作る。以下は設定例。

<?xml version="1.0"?>
<ruleset name="WordPress Custom Standard">
	<rule ref="WordPress">

		<!-- ファイル名にアンダースコアが使えない & class-ではじめなければならないルールを除外 -->
		<exclude name="WordPress.Files.FileName" />

		<!-- 三項演算子使用可 -->
		<exclude name="WordPress.PHP.DisallowShortTernary.Found" />

		<!-- コメントアウト使用可 -->
		<exclude name="Squiz.PHP.CommentedOutCode.Found" />

		<!-- コメントの末尾にピリオド無し可 -->
		<exclude name="Squiz.Commenting.InlineComment.InvalidEndChar"/>

		<!-- Short Array Syntax [] 使用可 -->
		<exclude name="Generic.Arrays.DisallowShortArraySyntax.Found" />

		<!-- 一行if分使用可 -->
		<exclude name="Generic.ControlStructures.InlineControlStructure.NotAllowed" />

		<!-- コメント無し可 -->
		<exclude name="Squiz.Commenting" />
		<exclude name="Generic.Commenting" />

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です