PHP_CodeSniffer 로 PHP Source 코드 표준 준수 여부 검사하기
PHP_CodeSniffer 는 PHP 소스 코드가 PSR 이나 Zend 같은 PHP 코딩 표준을 준수했는지 검사하는 도구로 코드를 검사하는 phpcs 와 검출된 문제를 자동으로 수정해주는 도구인 phpcbf 를 제공합니다.
설치
Project 별로 설치하려면 다음 명령을 실행합니다.
composer require --dev "squizlabs/php_codesniffer"
global 로 설치하려면 아래 명령을 실행하고 ${HOME}/.config/composer/vendor/bin/ 을 PATH 변수에 넣어줍니다.
composer global require "squizlabs/php_codesniffer=*"
사용
기본 사용
검사할 소스 파일의 경로 또는 소스 파일 directory 를 명시합니다.
./vendir/bin/phpcs /path/to/code/myfile.php FILE: /path/to/code/myfile.php -------------------------------------------------------------------------------- FOUND 5 ERROR(S) AND 1 WARNING(S) AFFECTING 5 LINE(S) -------------------------------------------------------------------------------- 2 | ERROR | Missing file doc comment 20 | ERROR | PHP keywords must be lowercase; expected "false" but found | | "FALSE" 47 | ERROR | Line not indented correctly; expected 4 spaces but found 1 47 | WARNING | Equals sign not aligned with surrounding assignments 51 | ERROR | Missing function doc comment 88 | ERROR | Line not indented correctly; expected 9 spaces but found 6 --------------------------------------------------------------------------------
확장자 지정
기본적으로 .php 확장자만 검사하는데 다른 확장자(예: .inc) 가 있을 경우 --extensions 옵션에 comma 를 구분자로 확장자들을 적어주며 아래는 php 와 inc 확장자를 검사하는 예제입니다.
./vendir/bin/phpcs /path/to/code/myfile.php --extensions=php,inc
summary report
요약 결과만 확인하려면 --report=summary 옵션을 추가해서 실행합니다.
$ ./vendor/bin/phpcs /path/to/code/my_dir --report=summary PHP CODE SNIFFER REPORT SUMMARY -------------------------------------------------------------------------------- FILE ERRORS WARNINGS -------------------------------------------------------------------------------- /path/to/code/myfile.inc 5 0 /path/to/code/yourfile.inc 1 1 /path/to/code/ourfile.inc 0 2 -------------------------------------------------------------------------------- A TOTAL OF 6 ERROR(S) AND 3 WARNING(S) WERE FOUND IN 3 FILE(S) --------------------------------------------------------------------------------
Coding style 명시
지원하는 코딩 스타일 목록을 보려면 -i 옵션을 주고 실행합니다.
./vendor/bin/phpcs -i The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz and Zend
검사시 적용할 코딩 스타일 명시하려면 --standard 옵션뒤에 코딩 표준을 지정하며 아래는 PSR12 로 검사합니다.
./vendor/bin/phpcs /path/to/code/my_dir --standard=PSR12
지원하는 Coding sniff 목록 출력
-e 옵션으로 지원하는 sniff 목록을 확인할수 있습니다.
./vendor/bin/phpcs --standard=PSR2 -e The PSR2 standard contains 40 sniffs Generic (12 sniffs) ------------------- Generic.ControlStructures.InlineControlStructure Generic.Files.ByteOrderMark ... PEAR (1 sniffs) --------------- PEAR.Functions.ValidDefaultValue PSR1 (3 sniffs) --------------- PSR1.Classes.ClassDeclaration PSR1.Files.SideEffects PSR1.Methods.CamelCapsMethodName PSR2 (11 sniffs) ---------------- PSR2.Classes.ClassDeclaration PSR2.Classes.PropertyDeclaration ...
Config set
매번 옵션을 주고 실행하는 것은 번거로우므로 PHP_CodeSniff 는 --config-set 명령을 통해 설정 파일을 만들 수 있습니다.
사용법은 --config-set key value 형식으로 설정 파일에 저장할 내용을 지정합니다.
color 사용
colors 를 1 로 설정하면 console 에 실행 결과를 표시할 때 칼라를 사용합니다.
./vendor/bin/phpcs --config-set colors 1
코딩 스타일
default_standard 로 사용할 기본 코딩 스타일을 지정할 수 있습니다.
./vendor/bin/phpcs --config-set default_standard PSR12
warning 숨기기
기본적으로 error 와 warning 을 모두 표시하는데 show_warnings 을 0 으로 설정하면 error 만 표시합니다.
./vendor/bin/phpcs --config-set show_warnings 0