사용자 도구

사이트 도구


wordpress:php_cs

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
wordpress:php_cs [2019/06/08 03:46] – 만듦 changwoowordpress:php_cs [2019/06/08 06:06] (현재) – [PHPStorm] changwoo
줄 1: 줄 1:
 워드프레스 사용하면서 플러그인의 코딩 스타일을 PhpStorm 에 맡기는 편이다. 그러다보니 너무 IDE에 의존하는 것이 아닌가 싶다. 공통적인 스타일 통일이 필요하다 생각하여 PhpCS를 스터디한 결과를 적는다. 워드프레스 사용하면서 플러그인의 코딩 스타일을 PhpStorm 에 맡기는 편이다. 그러다보니 너무 IDE에 의존하는 것이 아닌가 싶다. 공통적인 스타일 통일이 필요하다 생각하여 PhpCS를 스터디한 결과를 적는다.
  
 +====== PHP Code Sniffer ======
 +코드를 검사하여 지정한 규격대로 작성되었는지 검사한다. 
 + 
 +
 +==== 설치 ====
 +wget이나 curl을 이용해 글로벌로 설치 가능하다. 아래 참고문서에서 github 의 가이드를 따라 설치하면 된다.
 +
 +
 +==== phpcs.xml 예시 ====
 +아래는 간단한 phpcs.xml 예시이다. 플러그인에 맞춰 적절히 작성했다. 주석을 참고하여 적절히 설정을 가감한다. 괜찮은 설정이 있다면 업데이트 바람.
 +
 +<code xml>
 +<?xml version="1.0"?>
 +<ruleset name="WordPress Site Utilities Ruleset">
 +    <!-- What to scan -->
 +    <file>.</file>
 +    <exclude-pattern>/vendor/</exclude-pattern>
 +    <exclude-pattern>/node_modules/</exclude-pattern>
 +
 +    <!-- How to scan -->
 +    <!-- Usage instructions: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Usage -->
 +    <!-- Annotated ruleset: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml -->
 +    <arg value="sp"/> <!-- Show sniff and progress -->
 +    <arg name="basepath" value="./"/><!-- Strip the file paths down to the relevant bit -->
 +    <arg name="colors"/>
 +    <arg name="extensions" value="php"/>
 +    <arg name="parallel" value="8"/><!-- Enables parallel processing when available for faster results. -->
 +
 +    <!-- Rules: Check PHP version compatibility -->
 +    <!-- https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions -->
 +    <config name="testVersion" value="5.6-"/>
 +
 +    <!-- https://github.com/PHPCompatibility/PHPCompatibilityWP -->
 +    <rule ref="PHPCompatibilityWP"/>
 +
 +    <!-- Rules: WordPress Coding Standards -->
 +    <!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards -->
 +    <!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/wiki/Customizable-sniff-properties -->
 +    <config name="minimum_supported_wp_version" value="5.2"/>
 +    <rule ref="WordPress"/>
 +    <rule ref="WordPress.NamingConventions.PrefixAllGlobals">
 +        <properties>
 +            <!-- Value: replace the function, class, and variable prefixes used. Separate multiple prefixes with a comma. -->
 +            <property name="prefixes" type="array" value="wpsu"/>
 +        </properties>
 +    </rule>
 +    <rule ref="WordPress.WP.I18n">
 +        <properties>
 +            <!-- Value: replace the text domain used. -->
 +            <property name="text_domain" type="array" value="wpsu"/>
 +        </properties>
 +    </rule>
 +    <rule ref="WordPress.WhiteSpace.ControlStructureSpacing">
 +        <properties>
 +            <property name="blank_line_check" value="true"/>
 +        </properties>
 +    </rule>
 +</ruleset>
 +</code>
 +
 +
 +
 +==== 플러그인 composer.json 예시 ====
 +위 xml 문서 중 rule ref 속성이 있음을 발견할 수 있다. 이것들은 모두 스니퍼에서 읽어들일 수 있는 외부 규칙 세트들을 언급한 것이며 스니퍼가 인식할 수 있어야 한다.
 +
 +그러나 이런 규칙들은 스니퍼의 일부분이 아니기 때문에 별도로 설치하고 인식시켜 주어야 한다. 규칙 세트는 주로 composer를 활용하여 작성 가능하다.
 +
 +위 예제에서 사용된 규칙은 PHPCompatibilityWP, WordPress 이다. 이 둘은 다음 명령어로 설정 가능하다.
 +
 +<code bash>
 +composer.phar require --dev phpcompatibility/phpcompatibility-wp wp-coding-standards/wpcs dealerdirect/phpcodesniffer-composer-installer
 +</code>
 +
 +얼마정도  시간이 흐르고 나면 vendor 디렉토리에 의존성이 설치된다.
 +
 +
 +==== phpcs 룰셋 인식시키기 ====
 +룰을 설치하고 난 다음에는 스니퍼가 정확히 해당 룰셋의 경로를 인식해야 한다. 세번째에 언급된 ''dealerdirect/phpcodesniffer-composer-installer''를 설정하면 자동으로 인식이 된다.
 +
 +만약 사용하지 않고 수동으로 인식해야 한다면, 다음 설정을 composer.json 에다 넣어 주어야 한다.
 +
 +<code 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"
 +  }
 +</code>
 +
 +그냥 간단하게 패키지를 설치하는 것을 추천한다. 이렇게 되면 다음처럼 인식이 된다. 주의할 점은 composer로 설치된 phpcs 에만 설정이 먹힌다. 글로벌로 잡힌 phpcs와는 결과가 다를 것이다.
 +
 +<code bash>
 +$ ./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
 +</code>
 +
 +==== 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
  
wordpress/php_cs.1559965582.txt.gz · 마지막으로 수정됨: 2019/06/08 03:46 저자 changwoo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki