PHP에서 정적 코드 분석을 수행하려면 어떻게 해야 합니까?
PHP 소스 파일용 정적 분석 도구가 있습니까?
바이너리 자체는 구문 오류를 체크할 수 있지만 다음과 같은 더 많은 작업을 수행할 수 있는 방법을 찾고 있습니다.
- 미사용 변수 할당
- 먼저 초기화하지 않고 에 할당되어 있는 어레이
- 코드 스타일의 경고일 수 있습니다.
- ...
실행합니다.php
명령줄에서 보풀모드로 명령어를 실행하여 구문을 검증합니다.
php -l FILENAME
상위 레벨의 스태틱아나라이저에는 다음이 포함됩니다.
- php-sat - http://strategoxt.org/ 필요
- PHP_의존
- PHP_CodeSniffer
- PHP 메시지 디텍터
- PHPStan
- PHP-CS-픽서
- 팬
하위 레벨 분석기에는 다음이 포함됩니다.
- PHP_파서
- token_get_all(유효함수)
런타임 분석기는 PHP의 동적 특성으로 인해 다음과 같은 경우에 더 유용합니다.
문서 라이브러리 ppdoc 및 Doxygen은 코드 분석의 일종입니다.예를 들어 Doxygen은 Graphviz를 사용하여 적절한 상속 그래프를 렌더링하도록 구성할 수 있습니다.
또 다른 옵션은 xhprof로 Xdebug와 비슷하지만 가벼워 실제 가동 서버에 적합합니다.이 도구에는 PHP 기반 인터페이스가 포함되어 있습니다.
Unitialized 변수 확인.링크 1과 링크2는 이미 정상적으로 동작하고 있는 것 같습니다.
이것들 중 어느 것도 집중적으로 사용하고 있다고는 말할 수 없습니다.
완전성에 대해서는 phpCallGraph도 체크해 주세요.
사용해보았습니다.php -l
몇 가지 다른 도구도 있습니다.
하지만, 제 경험 중 가장 좋은 것(물론 주행거리가 다를 수 있습니다)은 pfff 툴셋의 스키크입니다.Quora에서 pfff에 대해 들었습니다(좋은 PHP/정적 분석 툴이 있나요?)
컴파일하여 설치할 수 있습니다.좋은 패키지는 없습니다(Linux Mint Debian 시스템에서는 libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev 및 libgimp 2.0-dev 의존관계를 먼저 설치해야 했습니다).하지만 설치할 가치가 있습니다.
결과는 다음과 같이 보고됩니다.
$ ~/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.
복사/붙여넣기/편집 코드를 찾는 "클론 탐지" 도구인 시맨틱 설계의 CloneDR을 참조하십시오.
공백, 코멘트 및 가변적인 이름 변경에도 불구하고 정확하고 근접한 코드 조각이 검색됩니다.PHP의 샘플 검출 리포트는, Web 사이트에서 확인할 수 있습니다.(제가 작가입니다.)
NetBeans IDE는 구문 오류, 비정상적인 변수 등을 확인합니다.자동화되어 있지 않지만 중소규모 프로젝트에서는 정상적으로 동작합니다.
PHP용 nWire라는 새로운 툴이 있습니다.Eclipse PDT 및 Zend Studio 7.x용 코드 탐색 플러그인입니다.PHP의 실시간 코드 분석을 지원하고 다음과 같은 도구를 제공합니다.
- 코드 시각화 - 컴포넌트 및 관련성을 대화형 그래픽으로 표현합니다.
- 코드 탐색 - 고유한 탐색 보기는 모든 연결을 표시하며 코드를 작성하거나 읽는 동안 사용자와 함께 작동합니다.
- 빠른 검색 - 메서드, 필드, 파일 등을 입력할 때 검색합니다.
PHP PMD(Programming Mission Detector)와 PHP CPD(Copy/Paste Detector)는 PHPnit의 이전 부분입니다.
PHP 스크립트의 취약성에 대한 정적 소스 코드 분석기인 RIPS가 있습니다.RIPS 의 소스 코드는, Source Forge 로 입수할 수 있습니다.
RIPS 사이트에서:
RIPS는 정적 코드 분석을 사용하여 PHP 응용 프로그램의 취약성을 찾기 위해 PHP로 작성된 도구입니다.모든 소스 코드 파일을 토큰화하고 구문 분석함으로써 RIPS는 PHP 소스 코드를 프로그램 모델로 변환하고 프로그램 흐름 중에 사용자 입력에 의해 오염될 수 있는 민감한 싱크(잠재적으로 취약한 함수)를 탐지할 수 있습니다.발견된 취약성의 구조화된 출력 외에 RIPS는 추가적인 수동 분석을 위한 통합 코드 감사 프레임워크도 제공합니다.
PHP Analyzer라는 정적 코드 분석 도구가 있습니다.PHP Analyzer는 이제 더 이상 사용되지 않는 프로젝트이지만 기존 분기에서 액세스할 수 있습니다.
기본적인 자동 수정 기능도 제공하는 정적 분석의 많은 유형 중에서 설명서를 참조하십시오.
Facebook의 HipHop으로 컴파일을 시도해 보는 것이 좋을지도 모릅니다.
프로젝트 전체에 대해 정적 분석을 수행하며, 이것이 원하는 것일 수 있습니다.
언급URL : https://stackoverflow.com/questions/378959/how-can-i-perform-static-code-analysis-in-php
'itsource' 카테고리의 다른 글
@Mock 주석 뒤에 있는 모의 인스턴스가 null입니다. (0) | 2023.02.06 |
---|---|
Java의 String 상수 풀은 힙과 스택 중 어디에 있습니까? (0) | 2023.02.06 |
단일 SQL 문의 열 헤더 출력을 억제하려면 어떻게 해야 합니까? (0) | 2023.02.06 |
팬더: 여러 열의 두 데이터 프레임을 병합(축소) (0) | 2023.02.06 |
file_put_module - 스트림을 열지 못했습니다.권한 거부 (0) | 2023.02.06 |