PhpMetrics - 코드 메트릭을 손쉽게 시각화

소개



이전 기사 ( PHPUnit - 테스트 커버리지를 HTML 보고서로 출력 / phpdbg + php-code-coverage + PHPUnit )에서는 UnitTest 런타임의 포괄적 인 비율을 시각화하기 위해 phpdbg와 php-code-coverage를 사용하여 테스트 커버리지를 HTML보고하는 방법을 요약했습니다.

이번에는 정적 해석에 위치하는 것 중 코드 메트릭스에 관련한 정보를 좋은 느낌으로 출력하는 툴에 관한 도입 순서를 설명합니다.

가정 환경



본 기사는 이하의 환경에서 동작 확인을 실시하고 있습니다.
  • OS : Windows/macOS
  • 가상 환경 : VirtualBox + Vagrant
  • 컨테이너 : Docker Container by docker-compose [^1]
  • PHP
  • PHP 7.2.11
  • composer 1.7.2
  • PhpMetrics 2.4.1


  • 구축 절차



    개요



    이번 구축하는 환경은, CentOS/7 위에 Docker 를 인스톨 해, 그 위에 PHPUnit + phpdbg + php-code-coverage 를 사용해 리포트를 출력합니다.



    절차



    앞으로의 절차는 다음 기사에서 소개한 절차에서 구축한 로컬 개발 환경을 기반으로 하여 작업을 수행해 갑니다.
    Windows/Mac을 불문하고 간단하게 구축이 가능하므로, 동작의 재현을 실시하고 싶은 경우는 그쪽의 기사를 참조해 주세요.
  • docker - 로컬 개발 환경 구축 / Laravel on Vagrant + VirtualBox with Docker - Qiita

  • 위의 단계 중 PHP와 composer는 이미 설치되어 있으므로 Composer 설치가 필요한 PhpMetrics 설치에서 작업을 진행합니다.

    1. PhpMetrics 설치



    composer 명령을 실행하여 PhpMetrics를 설치합니다.

    @VirtualHost
    $ docker-composer exec php composer require --dev phpmetrics/phpmetrics
    

    2. HTML 보고서 출력



    설치한 PhpMetrics를 사용하여 지표와 관련된 정보를 HTML로 출력합니다.

    @VirtualHost
    $ docker-composer exec php php ./vendor/bin/phpmetrics --report-html=myreport .
    

    3. 보고서 확인



    생성한 HTML 리포트는 다음 위치에 출력되어 있으므로 웹 브라우저에서 확인합시다.

    @VirtualHost
    $ ./myreport/index.php
    

    이번에는 Laravel에 AdminLTE를 최소 구성으로 통합한 프로젝트를 해석해 보았습니다.
    결과는 다음과 같습니다.



    composer 명령을 한 번에 설치할 수 있으며 HTML 보고서를 쉽게 생성할 수 있으므로 쉽고 빠르게 배포할 수 있습니다.

    끝에



    코딩한 프로젝트 내에 포함되는 소스 코드에 대해서는, 행수나 코드의 중복, 클래스수 등, UnitTest의 실행 이전에 해석할 수 있는 정보가 많이 존재합니다.
    "정적 분석"이나 "책상 디버그"라고 불리는 것처럼 소스 코드를 정량적, 정성적으로 보는 것으로 버그의 검출을 할 수 있으므로, PhpMetrics 와 같은 툴은 매우 유용하다고 생각합니다 .

    지금까지 이런 툴은 SonarQube 정도밖에 사용한 적이 없었습니다만, 이번 조사에서 PHP에 특화한 툴을 발견할 수 있었습니다.
    이 툴의 이점은, composer 로 간편하게 인스톨할 수가 있어 PHP 를 실행할 수 있는 환경이라면, Web 서버나 그 외의 툴을 인스톨 하지 않고 이용할 수 있다고 생각합니다.

    프로젝트에서 적절하게 사용하는 것으로, 소스 코드의 셀프 크로스 레뷰시나, 테스트 계획의 입안시등에 데이터를 활용할 수 있는 것은 아닐까요.

    참고



    다양한 정적 분석 도구


  • exakat/php-static-analysis-tools - GitHub
  • PHP Code Quality Tools to Check and Improve your Code - Web technologies

  • PhpMetrics


  • phpmetrics/PhpMetrics - GitHub
  • PhpMetrics - 데모
  • PhpMetrics - Docs

  • 기타


  • Qafoo/QualityAnalyzer - GitHub
  • 좋은 웹페이지 즐겨찾기