PHP 복사/붙여넣기 코드를 찾아내자! PHP Copy/Paste Detector (PHPCPD)


phpcpd 는 PHPUnit 으로 유명한 Sebastian Bergmann 이 만든 품질 검사 도구로 프로젝트내 PHP 코드의 복사/붙여넣기 여부를 검사해 줍니다.


설치

저자는 composer 로 설치하는 것보다는 phar 을 직접 다운받아서 사용하는 것을 권장하고 있습니다.

  1. phpcpd 를 다운로드 받습니다.

    sudo curl -L https://phar.phpunit.de/phpcpd.phar -o /usr/local/bin/phpcpd
  2. 실행 속성을 부여합니다.

    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



같이 보기

Ref