PHP 복사/붙여넣기 코드를 찾아내자! PHP Copy/Paste Detector (PHPCPD)
phpcpd 는 PHPUnit 으로 유명한 Sebastian Bergmann 이 만든 품질 검사 도구로 프로젝트내 PHP 코드의 복사/붙여넣기 여부를 검사해 줍니다.
설치
저자는 composer 로 설치하는 것보다는 phar 을 직접 다운받아서 사용하는 것을 권장하고 있습니다.
phpcpd 를 다운로드 받습니다.
sudo curl -L https://phar.phpunit.de/phpcpd.phar -o /usr/local/bin/phpcpd
실행 속성을 부여합니다.
sudo chmod +x /usr/local/bin/phpcpd
사용
phpcpd 뒤에 검사할 소스 파일의 폴더를 지정해 주면 됩니다.
$ phpcpd . phpcpd 5.0.2 by Sebastian Bergmann. Found 4 clones with 273 duplicated lines in 3 files: ... 1.98% duplicated lines out of 13771 total lines of code. Average size of duplication is 68 lines, largest clone has 185 of lines Time: 960 ms, Memory: 8.00 MB
composer 를 사용하는 프로젝트라면 vendor 폴더를 검사할 필요는 없습니다. --exclude 옵션뒤에 제외할 폴더를 지정해 주면 되며 여러 개의 폴더를 지정할 수 있습니다. 다음은 vendor 와 test 폴더를 제외하고 검사합니다.
$ phpcpd . --exclude=vendor --exclude=tests
같이 보기
- PHP_CodeSniffer 로 PHP Source 코드 표준 준수 여부 검사하기
- phpstan - PHP 정적 코드 분석기(Static Analysis Tool) 로 코드 품질 검사하기