是否有PHP源文件的静态分析工具?
二进制本身可以检查语法错误,但我正在寻找做得更多的东西,比如:
Online PHP lint
PHPLint
单元变量检查。不过,Link 1和2似乎已经很好地做到了这一点。
不过,我不能说我密集地使用了其中的任何一个:)
以lint模式从命令行运行php,在不执行的情况下验证语法:
php
php -l FILENAME
高级静态分析器包括:
较低级别的分析器包括:
由于PHP的动态特性,运行时分析程序对某些事情更有用,包括:
文档库phpdoc和Doxygen执行一种代码分析。例如,Doxygen可以配置为使用Graphviz呈现良好的继承图。
另一个选项是xhprof,它类似于Xdebug,但更轻,适合于生产服务器。该工具包括一个基于php的界面。
为了完整性——也检查phpCallGraph。
PHP PMD(编程错误检测器)和PHP CPD(复制/粘贴检测器)作为PHPUnit)的前一部分。
参见语义设计公司的克隆, a "clone detection"查找复制/粘贴/编辑代码的工具。
它将找到精确的和接近错误的代码片段,尽管有空白,注释,甚至变量重命名。PHP的检测报告样本可以在网站上找到。(我是作者。)
有一个名为nWire for PHP的新工具。它是Eclipse PDT和Zend Studio 7.x的代码探索插件。它为PHP提供了实时代码分析,并提供了以下工具:
NetBeans IDE检查语法错误、不常用的变量等。它不是自动的,但对于小型或中型项目来说效果很好。
PHP混乱检测器是非常棒和快速的。
我已经尝试使用php -l和其他一些工具。
php -l
然而,在我的经验中最好的一个(当然,你的里程可能不同)是PFFF工具集的检验。我在Quora上听说过pfff (是否有一个好的PHP lint /静态分析工具?< / >)。
您可以编译并安装它。没有很好的软件包(在我的Linux Mint Debian系统上,我必须先安装libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev和libgimp2.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.
有一个静态代码分析工具叫做PHP分析仪。PHP Analyzer现在是一个已弃用的项目,但您仍然可以在遗留分支上访问它。
在许多类型的静态分析中,它还提供了基本的自动修复功能,参见的文档。
你可能想尝试使用Facebook的嘻哈编译。
它对整个项目进行静态分析,可能就是你要找的。
GitHub page
有一个用于PHP脚本漏洞的静态源代码分析器。RIPS的源代码可以在SourceForge找到。
来自RIPS网站:
RIPS是一个用PHP编写的工具,用于查找PHP中的漏洞 应用程序使用静态代码分析。通过标记和解析所有 源代码文件的RIPS是能够将PHP源代码转换成 程序模型和检测敏感接收器(潜在的脆弱 函数),可以被用户输入(受恶意的 用户)在程序流中。除了found的结构化输出 RIPS还提供了一个集成的代码审计框架