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

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

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


当前回答

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

其他回答

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

参见Semantic Designs的克隆检测工具CloneDR,它可以发现复制/粘贴/编辑的代码。

它将找到精确的和接近错误的代码片段,尽管有空白,注释,甚至变量重命名。PHP的检测报告样本可以在网站上找到。(我是作者。)

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

我尝试过使用php -l和其他一些工具。

然而,在我的经验中,最好的一个(当然,您的里程可能有所不同)是检查pfff工具集。我在Quora上听说过pfff(有好的PHP lint /静态分析工具吗?)

您可以编译并安装它。没有很好的软件包(在我的Linux Mint Debian系统上,我必须先安装libpcre3-dev、ocaml、libccairo -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.

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