PHP_CODESNIFFER 용 플러그인 정적 분석 도구는 문제가있는 가변 사용에 대한 분석을 추가합니다.
VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable )unset() 내부에서 사용되는지 경고합니다. (Sniff Code : VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable )VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable )$this , self::$static_member , static::$static_member 클래스 범위 외부에서 사용됩니다. (Sniff Codes : VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass 또는 VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass ) VariableAnalysis는 PHP 5.4 이상 및 PHP CodesNiffer 버전 3.5.6 이상이 필요합니다.
이것은 가장 쉬운 방법입니다.
먼저 프로젝트를 위해 Phpcodesniffer 커omposer 인스턴더를 설치하지 않은 경우 프로젝트를 설치하십시오. 이것은 또한 PHPC를 설치합니다.
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
composer require --dev dealerdirect/phpcodesniffer-composer-installer
그런 다음이 표준을 설치하십시오.
composer require --dev sirbrillig/phpcs-variable-analysis
그런 다음 phpcs.xml 파일에 다음과 같은 줄을 추가하여 스 니프를 포함시킬 수 있습니다.
<rule ref="VariableAnalysis"/>
그 후에는 작동해야합니다!
Composer, PHAR 파일, 배 또는 GIT 체크 아웃을 통해 설치 지침에 따라 PHP_CodesNiffer (PHPC)를 설치하십시오.
php_codesniffer의 버전이 우리의 요구 사항과 일치하는지 확인하십시오.
variableAnalysis를 설치하십시오. VariableAnalysis 최신 릴리스 페이지에서 zip 또는 tar.gz 파일을 다운로드하십시오. 파일을 확장하고 결과 디렉토리를 phpcs-variable-analysis 으로 바꾸십시오. 디렉토리를 모든 PHPCS 표준을 유지하려는 장소로 이동하십시오.
새로 설치된 표준의 경로를 php_codesniffer installed_paths 구성에 추가하십시오. 다음 명령은 새로운 표준을 기존 표준에 추가해야합니다 (위에서 만든 디렉토리에 실제 경로를 제공해야합니다).
phpcs --config-set installed_paths "$(phpcs --config-show|grep installed_paths|awk '{ print $2 }'),/path/to/phpcs-variable-analysis"
다른 표준이 설치되어 있지 않으면 더 쉽게 수행 할 수 있습니다 (다시 실제 경로를 제공하십시오).
phpcs --config-set installed_paths /path/to/phpcs-variable-analysis
variableAnalysis의 동작을 사용자 정의 할 수있는 다양한 옵션이 있으며, 포함 된 규칙 세트 .xml.example을 살펴보십시오.
사용 가능한 옵션은 다음과 같습니다.
allowUnusedFunctionParameters falseallowUnusedCaughtExceptions (bool, default true ) : true로 설정되면 잡힌 예외 변수는 사용되지 않는 것으로 표시되지 않습니다.allowUnusedParametersBeforeUsed (bool, default true ) : true로 설정되면 사용되지 않은 함수 인수가 사용 된 기능 인수가 이어지면 무시됩니다.allowUnusedVariablesBeforeRequire (bool, default false ) : true로 설정되면 require , require_once , include 또는 include_once 사용되지 않는 것으로 표시되지 않습니다. 필요한 파일을위한 것일 수 있습니다.allowUndefinedVariablesInFileScope (bool, default false ) : 파일의 최상위 범위에서 정의되지 않은 변수로 설정되면 정의되지 않은 것으로 표시되지 않습니다. 이것은 다른 곳에서 정의 된 많은 글로벌 변수를 사용하는 템플릿 파일에 유용 할 수 있습니다.allowUnusedVariablesInFileScope (bool, default false ) : 파일의 최상위 범위에서 사용되지 않은 변수는 미사용으로 표시되지 않습니다. 이것은 다른 곳에서 사용할 수있는 많은 글로벌 변수를 정의 할 때 도움이 될 수 있습니다.validUnusedVariableNames (String, Default null ) : 사용하지 않은 가변 경고에서 무시하려는 자리 표시 자 변수 이름의 공간 구분 목록. 예를 들어, 변수 $junk 와 $unused 무시하려면 'junk unused' 으로 설정할 수 있습니다.ignoreUnusedRegexp (String, default null ) : 사용되지 않는 가변 경고에서 무시하려는 변수에 대한 php regexp 문자열 (명시 적 구분자가 필요하다는 점). 예를 들어, 변수 $_junk 및 $_unused 변수를 무시하려면 '/^_/' 로 설정할 수 있습니다.validUndefinedVariableNames (String, Default null ) : 정의되지 않은 변수 경고에서 무시하려는 자리 표시 자 변수 이름의 공간 구분 목록. 예를 들어, 변수 $post 및 $undefined 변수를 무시하기 위해 'post undefined' 로 설정할 수 있습니다. 이는 validUndefinedVariableRegexp 와 함께 사용할 수 있습니다.validUndefinedVariableRegexp (String, default null ) : 정의되지 않은 가변 경고에서 무시하려는 변수에 대한 PHP Regexp String (명시 적 구분자가 필요하다는 점). 예를 들어, 변수 $post 및 $undefined 변수를 무시하기 위해 '/^(post|undefined)$/' 로 설정할 수 있습니다. 이는 validUndefinedVariableNames 와 함께 사용할 수 있습니다.allowUnusedForeachVariables (bool, default true ) : true로 설정되면 key => value foreach 루프의 값 구문에서 사용되지 않은 값은 사용하지 않는 것으로 표시되지 않습니다.sitePassByRefFunctions (String, Default null ) : 참조로 초기화 할 변수를 전달하는 사용자 정의 함수 목록 (예 : preg_match() )이므로 이러한 변수를 미리 정의 할 필요는 없습니다. 목록은 공간 분리되어 있으며 각 항목은 functionName:1,2 입니다. 기능 이름은 먼저 콜론과 쉼표로 구분 된 인수 번호 목록 (1부터 시작)이 이어집니다. 인수 목록에서 특별 값 ... 마지막 숫자 이후의 모든 인수가 변수 정의로 간주됩니다.allowWordPressPassByRefFunctions (bool, default false ) : true로 설정되면, 공통 WordPress Pass-by-reference 함수 목록이 PHP의 목록에 추가되어 정의되지 않은 변수를 전달한 함수 (참조별로 초기화)가 허용됩니다.이 옵션을 설정하려면 규칙 세트에서 XML을 사용해야합니다. 자세한 내용은 PHPCS 사용자 정의 가능한 Sniff Properties 페이지를 참조하십시오. 다음은 밑줄로 시작하는 모든 변수를 무시하는 예입니다.
< rule ref = " VariableAnalysis.CodeAnalysis.VariableAnalysis " >
< properties >
< property name = " ignoreUnusedRegexp " value = " /^_/ " />
</ properties >
</ rule >이것은 https://github.com/illusori/php_codesniffer-variableanalysis의 훌륭한 작업에서 나왔습니다
이 저장소에서 문제 나 PR을 열어주십시오.
모든 변경 사항에는 테스트가 수반되어야하며 일렬 및 정적 분석을 통과해야합니다. PHP 5.4에서 실행되어야하므로 유형을 선언하기 위해 PHPDOC (실제 유형이 아닌)를 사용하십시오.
테스트를 실행하려면 작곡가가 설치되어 있는지 확인한 다음 실행하십시오.
composer install # you only need to do this once
composer test
라인을 실행하려면 사용하십시오.
composer lint
정적 분석을 실행하려면 사용하십시오.
composer phpstan