PHPMD는 PHP 의존의 파생 프로젝트이며 잘 알려진 Java 도구 PMD와 동등한 PHP를 목표로 합니다. PHPMD는 PHP 의존으로 측정된 원시 측정 스트림을 위한 사용자 친화적인 프런트엔드 애플리케이션으로 볼 수 있습니다.
https://phpmd.org
https://phpmd.org/download/index.html을 참조하세요.
phpmd [filename|directory[,filename|directory[,...]]] [report format] [ruleset file]
입력합니다. 즉:
mapi@arwen ~ $ phpmd php/PDepend/DbusUI/ xml ruleets.xml
rulesets.xml
규칙 세트 파일은 다음과 같습니다.
<? xml version = " 1.0 " ?>
< ruleset name = " My first PHPMD rule set "
xmlns = " https://phpmd.org/xml/ruleset/1.0.0 "
xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance "
xsi : schemaLocation = " https://phpmd.org/xml/ruleset/1.0.0
http://phpmd.org/xml/ruleset_xml_schema_1.0.0.xsd "
xsi : noNamespaceSchemaLocation = "
http://phpmd.org/xml/ruleset_xml_schema_1.0.0.xsd " >
< description >
My custom rule set that checks my code...
</ description >
< rule ref = " rulesets/codesize.xml " />
< rule ref = " rulesets/cleancode.xml " />
< rule ref = " rulesets/controversial.xml " />
< rule ref = " rulesets/design.xml " />
< rule ref = " rulesets/naming.xml " />
< rule ref = " rulesets/unusedcode.xml " />
</ ruleset >
xml 보고서는 다음과 같습니다.
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< pmd version = " 0.0.1 " timestamp = " 2009-12-19T22:17:18+01:00 " >
< file name = " /projects/pdepend/PHP/Depend/DbusUI/ResultPrinter.php " >
< violation beginline = " 81 "
endline = " 81 "
rule = " UnusedFormalParameter "
ruleset = " Unused Code Rules "
externalInfoUrl = " https://phpmd.org/rules/unusedcode.html#unusedformalparameter "
priority = " 3 " >
Avoid unused parameters such as '$builder'.
</ violation >
</ file >
</ pmd >
PHP 소스 코드가 포함된 파일 이름 목록 또는 디렉터리 이름과 함께 쉼표로 구분된 문자열을 PHPMD에 전달할 수 있습니다.
PHPMD Phar 배포판에는 위의 "rulesets/codesize.xml" 매개변수가 파일 시스템 참조처럼 보이더라도 아카이브 내부에 규칙 세트 파일이 포함되어 있습니다.
기본 출력은 XML이므로 파일로 리디렉션하고 XSLT 등으로 리디렉션할 수 있습니다.
다음과 같이 단축된 이름을 사용하여 기본 제공 규칙 세트를 참조할 수도 있습니다.
phpmd PHP/Depend/DbusUI/xml 코드 크기
명령줄 인터페이스는 다음과 같은 선택적 인수도 허용합니다.
--verbose, -v, -vv, -vvv
- 출력 상세 수준입니다. 처리되거나 캐시되는 내용에 대한 자세한 정보를 인쇄합니다. 보고서 출력을 방해하지 않도록 STDERR
로 전송됩니다. 또한 text
출력에는 각 오류 아래에 규칙 문서에 대한 링크가 있으며, 클릭하면 대부분의 IDE가 오류 줄에서 파일을 열 수 있는 링크로 변환되는 방식으로 위치 형식이 지정됩니다.--minimumpriority
- 규칙 우선순위 임계값입니다. 우선순위가 낮은 규칙은 사용되지 않습니다.--reportfile
- 기본 출력 대상 STDOUT
대신 지정된 파일로 보고서 출력을 보냅니다.--suffixes
- 유효한 소스 코드 파일 이름 확장자를 쉼표로 구분한 문자열입니다(예: php,phtml).--exclude
- 디렉터리를 무시하는 데 사용되는 쉼표로 구분된 패턴 문자열입니다. 패턴별로 제외하려면 별표를 사용하세요. 예를 들어 *src/foo/*.php
또는 *src/foo/*
--strict
- 또한 @SuppressWarnings 주석을 사용하여 해당 노드를 보고합니다.--ignore-errors-on-exit
- 오류가 발생하더라도 0 코드로 종료됩니다.--ignore-violations-on-exit
- 위반 사항이 발견되더라도 0 코드로 종료됩니다.--cache
- 결과 캐시를 활성화합니다. 현재 작업 디렉토리의 .phpmd.result-cache.php
가 기본값입니다.--cache-file
- --cache
와 함께 .phpmd.result-cache.php
의 기본 결과 캐시 파일 경로를 지정된 파일 경로로 재정의합니다.--cache-strategy
- 파일이 아직 최신인지 확인하기 위해 캐싱 전략을 설정합니다. 파일 내용을 기반으로 하는 콘텐츠 또는 파일 수정된 타임스탬프를 기반으로 하는 타임스탬프입니다.--generate-baseline
- 규칙 세트 정의 파일 옆에 기존 위반에 대한 phpmd.baseline.xml
을 생성합니다. 위반 파일 경로는 현재 작업 디렉터리를 기준으로 합니다.--update-baseline
- 더 이상 존재하지 않는 기존 phpmd.baseline.xml
에서 모든 위반 사항을 제거합니다. 새로운 위반사항은 추가되지 _않습니다_. 위반 파일 경로는 현재 작업 디렉터리를 기준으로 합니다.--baseline-file
- 사용자 정의 기준선 xml 파일의 파일 경로입니다. 없으면 phpmd.baseline.xml
이 기본값입니다.--color
- 출력에서 색상을 활성화합니다. 예를 들어 텍스트 렌더러는 규칙 이름을 노란색으로 표시하고 오류 설명을 빨간색으로 표시합니다.--extra-line-in-excerpt
- HTML 형식의 코드 조각에 추가되는 줄 수를 지정합니다.명령줄 예시:
phpmd PHP/Depend/DbusUI xml 코드 크기 --reportfile "phpmd.xml" --접미사 "php,phtml"
옵션은 인수 앞이나 뒤에 올 수 있습니다. 공백이나 등호( =
)를 사용하여 해당 값과 구분할 수 있습니다. 따라서 다음 구문은 이전 구문과 동일합니다.
phpmd --reportfile="phpmd.xml" --suffixes="php,phtml" PHP/Depend/DbusUI xml 코드 크기
-
로 시작하는 문자열은 옵션 이름으로 인식됩니다. -
로 시작하는 인수가 있는 경우 옵션을 먼저 설정한 다음 --
사용하여 명시적인 시작 또는 인수 목록을 표시합니다.
phpmd --reportfile "phpmd.xml" --접미사 "php,phtml" -- -foo/Folder xml 코드 크기
PHPMD는 테스트 중인 소스에 적용될 규칙 세트를 구성/정의하는 소위 규칙 세트를 사용합니다. PHPMD의 기본 배포판에는 기본적으로 사용할 수 있는 몇 가지 기본 세트가 이미 포함되어 있습니다. 이 구성을 적용하려면 세트 이름으로 PHPMD의 cli 도구를 호출할 수 있습니다.
~ $ phpmd /path/to/source 텍스트 코드 크기
하지만 소스에 대해 둘 이상의 규칙 세트를 적용하려면 어떻게 해야 할까요? 또한 쉼표로 구분된 규칙 세트 이름 목록을 PHPMD의 cli 도구에 전달할 수도 있습니다.
~ $ phpmd /path/to/source 텍스트 코드 크기, 사용되지 않은 코드, 이름 지정
사용자 정의 규칙 세트 파일을 기본 제공 규칙 세트와 혼합할 수도 있습니다.
~ $ phpmd /path/to/source text codesize,/my/rules.xml
그게 다야. 이 동작을 사용하면 소스 코드를 확인하는 규칙 세트의 고유한 조합을 지정할 수 있습니다.
또한 PHPMD를 사용하면 코드의 특정 부분에 대해 하나의 출력을 생성하려는 경우 여러 소스 디렉터리를 지정할 수 있습니다.
~ $ phpmd /path/to/code,index.php,/another/place/with/code 텍스트 코드 크기
또는 글로브 패턴을 사용하십시오.
~ $ phpmd src/main/php/*/*/*{렌더러,노드}.php 텍스트 my/rules.xml
PHPMD는 표준 입력 stdin도 읽을 수 있습니다.
~ $ 고양이 src/MyService.php | phpmd - my/rules.xml 텍스트
따라서 스캔할 PHP 코드는 반드시 파일에 저장될 필요는 없는 다른 프로그램에 의해 생성될 수 있습니다.
PHPMD의 명령줄 도구는 현재 네 가지 다른 종료 코드를 정의합니다.
--ignore-violations-on-exit
플래그를 사용하여 이 동작을 방지할 수도 있습니다. 이 플래그는 위반이 발견되더라도 결과가 0 이 됩니다.현재 PHPMD에는 다음 렌더러가 함께 제공됩니다.
기존 프로젝트의 경우 위반 기준선을 생성할 수 있습니다. 이 기준의 모든 위반은 추가 검사에서 무시됩니다.
권장되는 접근 방식은 프로젝트 루트에 있는 phpmd.xml
입니다. 옆에 phpmd.baseline.xml
을 생성하려면:
~ $ phpmd /path/to/source text phpmd.xml --generate-baseline
내보내기를 위한 사용자 정의 기준 파일 경로를 지정하려면 다음을 수행하십시오.
~ $ phpmd /path/to/source text phpmd.xml --generate-baseline --baseline-file /path/to/source/phpmd.baseline.xml
기본적으로 PHPMD는 phpmd.xml
옆에서 phpmd.baseline.xml
찾습니다. 이 동작을 덮어쓰려면:
~ $ phpmd /path/to/source text phpmd.xml --baseline-file /path/to/source/phpmd.baseline.xml
기존 기준 파일을 정리하고 더 이상 존재하지 않는 위반 만 제거 하려면 다음을 수행하십시오.
~ $ phpmd /path/to/source text phpmd.xml --update-baseline
Tidelift 구독의 일부로 제공됩니다.
PHPMD
및 수천 개의 기타 패키지 관리자는 Tidelift와 협력하여 애플리케이션 구축에 사용하는 오픈 소스 종속성에 대한 상업적 지원 및 유지 관리를 제공하고 있습니다. 시간을 절약하고 위험을 줄이며 코드 상태를 개선하는 동시에 사용하는 정확한 종속성에 대한 비용을 관리자에게 지불합니다. 자세히 알아보세요.
PHPMD에 기여하고 싶다면 기여 가이드를 참고하세요.