是否有PHP源文件的静态分析工具?

二进制本身可以检查语法错误,但我正在寻找做得更多的东西,比如:

未使用的变量赋值 未初始化就被赋值的数组 可能还有代码风格的警告 ...


当前回答

PHP PMD(编程错误检测器)和PHP CPD(复制/粘贴检测器)作为PHPUnit的前一部分。

其他回答

有一个用于PHP脚本漏洞的静态源代码分析器。RIPS的源代码可以在SourceForge上找到。

来自RIPS网站:

RIPS is a tool written in PHP to find vulnerabilities in PHP applications using static code analysis. By tokenizing and parsing all source code files RIPS is able to transform PHP source code into a program model and to detect sensitive sinks (potentially vulnerable functions) that can be tainted by userinput (influenced by a malicious user) during the program flow. Besides the structured output of found vulnerabilities RIPS also offers an integrated code audit framework for further manual analysis.

从命令行以lint模式运行php以验证语法而不执行:

php -l FILENAME

高级静态分析器包括:

php-sat -需要http://strategoxt.org/ PHP_Depend PHP_CodeSniffer PHP混乱检测器 PHPStan PHP-CS-Fixer 显象

较低级别的分析器包括:

PHP_Parser Token_get_all(原语函数)

由于PHP的动态特性,运行时分析程序对某些事情更有用,包括:

Xdebug具有代码覆盖和函数跟踪。 我的PHP跟踪工具基于Xdebug的函数跟踪,使用静态/动态结合的方法。

文档库phpdoc和Doxygen执行一种代码分析。例如,Doxygen可以配置为使用Graphviz呈现良好的继承图。

另一个选项是xhprof,它类似于Xdebug,但更轻,适合于生产服务器。该工具包括一个基于php的界面。

为了完整起见,还要检查phpCallGraph。

PHP PMD(编程错误检测器)和PHP CPD(复制/粘贴检测器)作为PHPUnit的前一部分。

NetBeans IDE检查语法错误、不常用的变量等。它不是自动的,但对于小型或中型项目来说效果很好。