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


같이 보기

Ref