[php] PHP에서 정적 코드 분석을 수행하는 방법은 무엇입니까? [닫은]

PHP 소스 파일에 대한 정적 분석 도구가 있습니까? 이진 자체는 구문 오류를 확인할 수 있지만 다음과 같이 더 많은 일을 찾고 있습니다.

  • 사용되지 않은 변수 할당
  • 먼저 초기화하지 않고 할당 된 배열
  • 코드 스타일 경고


답변

명령 행에서 lint-mode로 php를 실행하여 실행하지 않고 구문을 검증하십시오.

php -l FILENAME

고급 정적 분석기에는 다음이 포함됩니다.

하위 레벨 분석기에는 다음이 포함됩니다.

PHP의 동적 특성으로 인해 일부에 더 유용한 런타임 분석기는 다음과 같습니다.

문서 라이브러리 phpdocdoxygen 은 일종의 코드 분석을 수행합니다. 예를 들어 Doxygen은 graphviz 를 사용하여 멋진 상속 그래프를 렌더링하도록 구성 할 수 있습니다 .

또 다른 옵션은 xhprof 이며 xdebug와 비슷하지만 더 가벼워 프로덕션 서버에 적합합니다. 이 도구에는 PHP 기반 인터페이스가 포함되어 있습니다.


답변

온라인 PHP 보풀

PHPLint

단일화 된 변수 확인 . 링크 1과 2는 이미이 작업을 올바르게 수행하는 것 같습니다.

나는 이것들을 집중적으로 사용했다고 말할 수는 없다 🙂


답변

완성도 -phpCallGraph 도 확인 하십시오 .


답변

PHP Mess Detector 는 훌륭하고 빠릅니다.


답변

나는 $ php -l을 사용하고 다른 도구를 사용하려고 시도했다. 그러나 내 경험 중 가장 좋은 것은 (물론 YMMV) pfff toolset 검사 입니다. Quora에서 pfff에 대해 들었습니다 ( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool )

컴파일하고 설치할 수 있습니다. 좋은 패키지는 없습니다 (내 민트 데비안에서는 먼저 libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev 및 libgimp2.0-dev 종속성을 설치해야 함)는 가치가 있습니다.

결과는 다음과 같이보고됩니다

rjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
login-now.php:7:4: CHECK: Unused Local variable $title
go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.


답변

복사 / 붙여 넣기 / 편집 된 코드를 찾는 “복제 탐지”도구 인 Semantic Designs의 CloneDR을 참조하십시오 . 공백, 주석 및 가변 이름 변경에도 불구하고 정확하고 거의 누락 된 코드 조각을 찾을 수 있습니다. PHP에 대한 샘플 탐지 보고서는 웹 사이트에서 찾을 수 있습니다. (저는 저자입니다).


답변

NetBeans IDE는 구문 오류, 사용되지 않은 변수 등을 검사합니다. 자동화되지는 않지만 중소 규모 프로젝트에 적합합니다.