是否有一个静态代码分析器的PHP文件?

有没有PHP文件的静态代码分析器? 二进制本身可以检查语法错误,但是我正在寻找更多的东西,比如未使用的variables赋值,分配到的数组,而不是首先被初始化,以及可能的代码样式警告。 开源计划是首选,但如果强烈build议,我们可能会说服公司支付一些东西。

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

  • php -l FILENAME

更高级的静态分析仪包括:

低级分析仪包括:

  • PHP_Parser
  • token_get_all (原始函数)

运行时分析器由于PHP的dynamic特性而对某些事情更有用,包括:

  • Xdebug具有代码覆盖率和function跟踪 。
  • 我的PHP示踪工具使用了一个组合的静态/dynamic方法,build立在Xdebug的函数轨迹上。

文档库phpdoc和doxygen执行一种代码分析。 例如,Doxygen可以configuration为使用graphviz呈现良好的inheritance图。

另一种select是xhprof ,它类似于xdebug,但更轻,使其适合于生产服务器。 该工具包括一个基于PHP的界面。

在线PHP lint

PHPLint

单元化variables检查 。 链接1和2似乎已经做得很好,但是。

我不能说我已经使用任何这些密集的,虽然:)

为了完整性 – 也检查phpCallGraph 。

PHP混乱探测器是真棒和快速。

我已经尝试使用$ php -l和其他工具。 然而,根据我的经验(YMMV,当然)中最好的一个是pfff工具集 。 我听说过Quora上的pfff( http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool

你可以编译并安装它。 没有好的软件包(在我的薄荷Debian上,我必须首先安装libpcre3-dev,ocaml,libcairo-dev,libgtk-3-dev和libgimp2.0-dev依赖项),但是它应该值得一个intsall。

结果报告如

 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. 

请参阅语义devise的CloneDR ,一个“克隆检测”工具,可以find复制/粘贴/编辑的代码。 它会发现精确的和几乎错过的代码片断,尽pipe有空白,注释甚至可变的重命名。 有关PHP的样本检测报告可以在wesite中find。 (我是作者)。

NetBeans IDE将检查语法错误,未使用的variables等。 这不是自动化的,但对于中小型项目来说工作得很好。

有一个叫做nWire for PHP的新工具。 这是Eclipse PDT和Zend Studio 7.x的代码探索插件。 它支持PHP的实时代码分析,并提供以下工具:

  • 代码可视化 – 组件和关联的交互式graphics表示。
  • 代码导航 – 独特的导航视图显示所有的关联,并在您编写或读取代码时与您一起工作。
  • 快速search – search方法,字段,文件等

PHP PMD(项目混乱检测器)和PHP CPD(复制粘贴检测器)作为PHPUnit的前一部分

另外, PHP编译器也许值得一试。 它的主要function是生成PHP二进制文件,但它具有一些分析function。

有RIPS – 一个静态源代码分析器的PHP脚本中的漏洞 。 在SourceForge上可用的RIPS的来源。

从RIPS网站:

RIPS是一个用PHP编写的工具,用于使用静态代码分析来查找PHP应用程序中的漏洞。 通过标记和parsing所有源代码文件,RIPS能够将PHP源代码转换为程序模型,并在程序stream程中检测可能受到用户input(受恶意用户影响)的敏感接收器(潜在的易受攻击的函数)。 除了发现漏洞的结构化输出之外,RIPS还为进一步的手动分析提供了一个集成的代码审计框架。

静态代码分析有一个绝对新的工具叫做PHP分析器 。

在许多types的静态分析中,它还提供了基本的自动修复function,请参阅文档 。

更新:PHP-Analyzer现在已被弃用的项目,但你仍然可以在传统的分支上访问它

你可能想尝试与Facebook的嘻哈编辑。

它对整个项目进行静态分析,可能是你正在寻找的东西。

https://github.com/facebook/hiphop-php