더 나은 PHP를 작성하기위한 쌍 프로그래밍 파트너. Pahout은 PHP Mahout을 의미합니까?
PHP는 오랜 역사상 다양한 기능이 추가되었습니다. 그러나 역사의 길이로 인해 많은 오래된 구문이 인터넷에 흩어져 있습니다. PHPER가 그들로부터 배운 경우, PHPER는 최신 PHP 버전에 존재하는 우수한 구문과 기능을 알 수 없습니다. 이것은 매우 슬픈 일입니다.
그래서 나는 당신에게 좋은 방법을 알려주는 쌍 프로그래밍 파트너처럼 린터를 만드는 것에 대해 생각했습니다. 더 나은 PHP를 작성하는 데 도움이 될 것입니다.
그러나 먼저 Pahout의 힌트를 기반으로 모든 기존 코드를 수정하지 마십시오. Pahout은 쌍 프로그래밍 파트너입니다. 프로그래밍을 페어링 할 때 기존 코드를 모두 확인하지 않습니까? 내 권장 사항은 새로 생성되거나 수정 된 파일 만 확인하는 것입니다. 예를 들어, 사전 커밋 후크를 다음과 같이 설정하는 것이 좋습니다.
#! /bin/sh
git diff --name-only | grep .php | xargs vendor/bin/pahout
if [ " $? " -ne 0] ; then
exit 1
fi Pahout은 다음과 같은 환경이 필요합니다.
작곡가로 설치할 수 있습니다.
$ composer require --dev wata727/pahout
$ vendor/bin/pahout -V
Docker 이미지를 사용하면 지역 환경에 영향을 미치지 않고 쉽게 Pahout을 시도 할 수 있습니다.
$ docker run --rm -t -v $(pwd):/workdir wata727/pahout
프로젝트에서 PHP 7.1.8을 사용하고 있습니다. 다음 코드에 대해 어떻게 생각하십니까?
<?php
// Do something...
$ response = get_awesome_response ();
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
// Do something...아마도 그것은 친숙한 코드 일 것입니다. 그러나 Null Coalescing Operator를 알고 있다면 다음과 같은 내용을 쓸 것입니다.
<?php
// Do something...
$ response = get_awesome_response ();
$ error = $ response [ ' error ' ] ?? null ; # Great!
// Do something...Pahout은 그러한 재 작성을 지원합니다. 위의 예에서 실행하십시오.
$ pahout --php-version 7.1.8 test.php
test.php:8
NullCoalescingOperator: Use the null coalecing operator instead of the ternary operator. [https://github.com/wata727/pahout/blob/master/docs/NullCoalescingOperator.md]
1 files checked, 1 hints detected.
Pahout은 Null Coalescing 연산자를 사용할 수있는 곳을 알려줍니다! Pahout에서 제공 한 힌트 목록은이 문서를 참조하십시오.
여러 파일을 분석하려면 둘 이상을 지정할 수 있습니다.
$ pahout --php-version 7.1.8 test.php test2.php ...
디렉토리 이름을 지정하면 해당 디렉토리의 모든 .php 파일이 포함됩니다.
$ pahout --php-version 7.1.8 src
명령 줄에서 구성을 변경할 수 있습니다.
$ pahout --help
Description:
A pair programming partner for writing better PHP
Usage:
check [options] [--] [<files>...]
Arguments:
files List of file names or directory names to be analyzed
Options:
--php-version[=PHP-VERSION] Target PHP version [default: runtime version]
--ignore-tools[=IGNORE-TOOLS] Ignore tool types [default: Nothing to ignore] (multiple values allowed)
--ignore-paths[=IGNORE-PATHS] Ignore files and directories [default: Nothing to ignore] (multiple values allowed)
--extensions[=EXTENSIONS] File extensions to be analyzed [default: php] (multiple values allowed)
--vendor[=VENDOR] Check vendor directory [default: false]
-f, --format[=FORMAT] Output format [default: "pretty", possibles: "pretty", "json"]
-c, --config[=CONFIG] Config file path [default: ".pahout.yaml"]
--only-tools[=ONLY-TOOLS] Check only the given tool types (multiple values allowed)
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
.pahout.yaml 이라는 구성 파일을 준비하여 구성을 변경할 수도 있습니다.
php_version : 7.0.0
ignore_tools :
- ShortArraySyntax
ignore_paths :
- tests
- bin
extensions :
- php
- module
- inc
vendor : true프로젝트의 PHP 버전을 지정하십시오. 기본값은 런타임 버전입니다. Pahout 은이 버전을 사용하여 도구를 선택합니다.
Pahout에서 힌트를 생성하는 것을 "도구"라고합니다. 무시할 도구 이름을 지정할 수 있습니다. 도구 이름 목록은 문서를보십시오.
ignore_tools 와 달리 확인할 도구를 지정하십시오.
무시하려는 파일 또는 디렉토리를 지정할 수 있습니다. 디렉토리 이름이 지정된 경우 해당 디렉토리의 모든 파일은 무시됩니다.
분석 할 파일 확장. 기본값은 php 전용입니다.
공급 업체 디렉토리를 무시할지 여부를 설정할 수 있습니다.
참고 : 공급 업체 디렉토리는 기본적으로 무시됩니다. 일반적으로 공급 업체 디렉토리를 확인할 필요가 없습니다.
출력 형식을 지정합니다. 현재 pretty json 지원됩니다.
구성 파일 이름을 지정합니다. 구성 파일에서 .pahout.yaml 이외의 파일 이름을 사용하려는 경우 유용합니다.
주석을 사용하여 특정 줄에 대한 힌트를 무시할 수 있습니다. @rebel 로 무시할 도구 이름을 지정하십시오.
<?php
/** @rebel NullCoalescingOperator */
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;다음 의견은 같은 방식으로 작동합니다.
<?php
/**
* @rebel NullCoalescingOperator
*/
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ; # @rebel NullCoalescingOperator 카즈마 와타나베