워드프레스 사용하면서 플러그인의 코딩 스타일을 PhpStorm 에 맡기는 편이다. 그러다보니 너무 IDE에 의존하는 것이 아닌가 싶다. 공통적인 스타일 통일이 필요하다 생각하여 PhpCS를 스터디한 결과를 적는다.
====== PHP Code Sniffer ======
코드를 검사하여 지정한 규격대로 작성되었는지 검사한다.
==== 설치 ====
wget이나 curl을 이용해 글로벌로 설치 가능하다. 아래 참고문서에서 github 의 가이드를 따라 설치하면 된다.
==== phpcs.xml 예시 ====
아래는 간단한 phpcs.xml 예시이다. 플러그인에 맞춰 적절히 작성했다. 주석을 참고하여 적절히 설정을 가감한다. 괜찮은 설정이 있다면 업데이트 바람.
.
/vendor/
/node_modules/
==== 플러그인 composer.json 예시 ====
위 xml 문서 중 rule ref 속성이 있음을 발견할 수 있다. 이것들은 모두 스니퍼에서 읽어들일 수 있는 외부 규칙 세트들을 언급한 것이며 스니퍼가 인식할 수 있어야 한다.
그러나 이런 규칙들은 스니퍼의 일부분이 아니기 때문에 별도로 설치하고 인식시켜 주어야 한다. 규칙 세트는 주로 composer를 활용하여 작성 가능하다.
위 예제에서 사용된 규칙은 PHPCompatibilityWP, WordPress 이다. 이 둘은 다음 명령어로 설정 가능하다.
composer.phar require --dev phpcompatibility/phpcompatibility-wp wp-coding-standards/wpcs dealerdirect/phpcodesniffer-composer-installer
얼마정도 시간이 흐르고 나면 vendor 디렉토리에 의존성이 설치된다.
==== phpcs 룰셋 인식시키기 ====
룰을 설치하고 난 다음에는 스니퍼가 정확히 해당 룰셋의 경로를 인식해야 한다. 세번째에 언급된 ''dealerdirect/phpcodesniffer-composer-installer''를 설정하면 자동으로 인식이 된다.
만약 사용하지 않고 수동으로 인식해야 한다면, 다음 설정을 composer.json 에다 넣어 주어야 한다.
"scripts": {
"post-install-cmd": "\"vendor/bin/phpcs\" --config-set installed_paths vendor/phpcompatibility/php-compatibility,vendor/phpcompatibility/phpcompatibility-paragonie,vendor/phpcompatibility/phpcompatibility-wp,vendor/wp-coding-standards/wpcs/WordPress,vendor/wp-coding-standards/wpcs/WordPress-Core,vendor/wp-coding-standards/wpcs/WordPress-Docs,,vendor/wp-coding-standards/wpcs/WordPress-Extra",
"post-update-cmd" : "\"vendor/bin/phpcs\" --config-set installed_paths vendor/phpcompatibility/php-compatibility,vendor/phpcompatibility/phpcompatibility-paragonie,vendor/phpcompatibility/phpcompatibility-wp,vendor/wp-coding-standards/wpcs/WordPress,vendor/wp-coding-standards/wpcs/WordPress-Core,vendor/wp-coding-standards/wpcs/WordPress-Docs,,vendor/wp-coding-standards/wpcs/WordPress-Extra"
}
그냥 간단하게 패키지를 설치하는 것을 추천한다. 이렇게 되면 다음처럼 인식이 된다. 주의할 점은 composer로 설치된 phpcs 에만 설정이 먹힌다. 글로벌로 잡힌 phpcs와는 결과가 다를 것이다.
$ ./vendor/bin/phpcs -i
The installed coding standards are Squiz, PSR2, PSR12, MySource, PEAR, PSR1, Zend, PHPCompatibility, PHPCompatibilityParagonieSodiumCompat, PHPCompatibilityParagonieRandomCompat, PHPCompatibilityWP, WordPress, WordPress-Core, WordPress-Docs and WordPress-Extra
==== PHPStorm ====
- Settings > Languages&Frameworks > PHP > Quality Tools > Code Sniffer 에서 설정을 맞춘다.
- Settings > Editor > Inspections > PHP > Quality Tools > PHP Code Sniffer validation 체크
- Coding Standard를 custom으로 맞추고 설정한 phpcs.xml 파일을 인식시켜주면 IDE 화면에서 검사 결과를 바로 보여줌
==== 참고 문서 ====
* [[ https://github.com/squizlabs/PHP_CodeSniffer | PHP_CodeSniffer]]
* [[ https://github.com/PHPCompatibility/PHPCompatibility ]]
* https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
* https://www.jetbrains.com/help/phpstorm/using-php-code-sniffer.html