PHP에서 정적 코드 분석을 수행하는 방법은 무엇입니까? [닫은]
PHP 소스 파일에 대한 정적 분석 도구가 있습니까? 바이너리 자체는 구문 오류를 확인할 수 있지만 다음과 같이 더 많은 기능을 찾고 있습니다.
- 사용되지 않은 변수 할당
- 먼저 초기화하지 않고 할당 된 배열
- 코드 스타일 경고
- ...
명령 행에서 lint-mode로 php를 실행하여 실행하지 않고 구문을 검증하십시오.
php -l FILENAME
고급 정적 분석기에는 다음이 포함됩니다.
- php-sat - http ://strategoxt.org/ 필요
- PHP_Depend
- PHP_CodeSniffer
- PHP 메시지 탐지기
- PHPStan
- PHP-CS-Fixer
- phan
하위 레벨 분석기에는 다음이 포함됩니다.
- PHP_Parser
- token_get_all (기본 기능)
PHP의 동적 특성으로 인해 일부에 더 유용한 런타임 분석기는 다음과 같습니다.
- Xdebug 는 코드 커버리지 와 함수 트레이스를 가지고 있습니다.
- 내 PHP Tracer Tool 은 Xdebug의 함수 추적을 기반으로 조합 된 정적 / 동적 접근 방식을 사용합니다.
문서 라이브러리 phpdoc 및 doxygen 은 일종의 코드 분석을 수행합니다. 예를 들어 Doxygen은 graphviz 를 사용하여 멋진 상속 그래프를 렌더링하도록 구성 할 수 있습니다 .
또 다른 옵션은 xhprof 이며 xdebug와 비슷하지만 더 가벼워 프로덕션 서버에 적합합니다. 이 도구에는 PHP 기반 인터페이스가 포함되어 있습니다.
단일화 된 변수 확인 . 링크 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는 구문 오류, 사용되지 않은 변수 등을 검사합니다. 자동화되지는 않지만 중소 규모 프로젝트에 적합합니다.
PHP 용 nWire 라는 새로운 도구가 있습니다 . Eclipse PDT 및 Zend Studio 7.x 용 코드 탐색 플러그인입니다. PHP에 대한 실시간 코드 분석을 가능하게하며 다음 도구를 제공합니다.
- 코드 시각화-컴포넌트 및 연관의 대화식 그래픽 표현.
- 코드 탐색-고유 한 탐색보기는 모든 연관을 표시하며 코드를 쓰거나 읽는 동안 작동합니다.
- 빠른 검색-메소드, 필드, 파일 등을 입력 할 때 검색
PHPUnit의 이전 부분 인 PHP PMD (프로젝트 엉망 탐지기) 및 PHP CPD (복사 붙여 넣기 탐지기)
PHP 스크립트에는 취약점에 대한 정적 소스 코드 분석기 인 RIPS 가 있습니다 . SourceForge 에서 사용할 수있는 RIPS 출처 .
RIPS 사이트에서 :
RIPS는 정적 코드 분석을 사용하여 PHP 응용 프로그램의 취약성을 찾기 위해 PHP로 작성된 도구입니다. RIPS는 모든 소스 코드 파일을 토큰 화하고 파싱하여 PHP 소스 코드를 프로그램 모델로 변환하고 프로그램 흐름 중에 사용자 입력 (악의적 인 사용자에 의해 영향을 받음)으로 오염 될 수있는 민감한 싱크 (잠재적으로 취약한 기능)를 감지 할 수 있습니다. 발견 된 취약점의 구조화 된 결과 외에도 RIPS는 추가 수동 분석을위한 통합 코드 감사 프레임 워크를 제공합니다.
정적 코드 분석을위한 PHP Analyzer 라는 완전히 새로운 도구가 있습니다 .
여러 유형의 정적 분석 중에서 기본 자동 수정 기능도 제공합니다 ( 문서 참조) .
업데이트 : PHP-Analyzer는 더 이상 사용되지 않지만 여전히 레거시 브랜치에서 액세스 할 수 있습니다
Facebook의 힙합으로 컴파일하려고 할 수 있습니다.
전체 프로젝트에 대한 정적 분석을 수행하며 원하는 것일 수 있습니다.
https://github.com/facebook/hiphop-php
참고 URL : https://stackoverflow.com/questions/378959/how-to-perform-static-code-analysis-in-php
'Programming' 카테고리의 다른 글
PHP에서 날짜 형식 변환 (0) | 2020.02.15 |
---|---|
변수가 존재하는지 JavaScript 확인 (정의 / 초기화) (0) | 2020.02.15 |
Facebook 콜백이 '# _ = _'을 반환 URL에 추가합니다. (0) | 2020.02.15 |
mongodb에서 마지막 N 레코드를 얻는 방법? (0) | 2020.02.15 |
최신 버전의 OS X (Yosemite 또는 El Capitan)를 설치 한 후`pg_tblspc`가 누락 됨 (0) | 2020.02.15 |