有没有针对 PHP 源文件的静态分析工具?
二进制文件本身可以检查语法错误,但我正在寻找更多功能,例如:
- 未使用的变量赋值
- 未先初始化就分配到的数组
- 以及可能的代码风格警告
- ...
有没有针对 PHP 源文件的静态分析工具?
二进制文件本身可以检查语法错误,但我正在寻找更多功能,例如:
php
从命令行以 lint 模式运行以验证语法而不执行:
php -l FILENAME
更高级别的静态分析器包括:
低级分析器包括:
由于 PHP 的动态特性,运行时分析器对某些事情更有用,包括:
文档库phpdoc和Doxygen执行一种代码分析。例如,Doxygen 可以配置为使用Graphviz呈现漂亮的继承图。
另一种选择是xhprof,它类似于 Xdebug,但更轻,使其适用于生产服务器。该工具包括一个基于 PHP 的界面。
为了完整性——还要检查phpCallGraph。
PHP Mess Detector很棒而且速度很快。
我试过使用php -l
和其他几个工具。
但是,根据我的经验,最好的一个(当然,您的里程可能会有所不同)是pfff toolset 的检查。我在 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.
请参阅Semantic Designs 的 CloneDR,这是一种“克隆检测”工具,可查找复制/粘贴/编辑的代码。
尽管有空格、注释甚至变量重命名,它仍会找到准确的和未命中的代码片段。可以在网站上找到 PHP 的示例检测报告。(我是作者。)
NetBeans IDE 检查语法错误、未使用的变量等。它不是自动化的,但适用于中小型项目。
有一个名为nWire for PHP的新工具。它是Eclipse PDT和Zend Studio 7.x的代码探索插件。它支持 PHP 的实时代码分析,并提供以下工具:
有RIPS——一种用于 PHP 脚本漏洞的静态源代码分析器。RIPS 的源代码可在SourceForge获得。
从 RIPS 网站:
RIPS 是一个用 PHP 编写的工具,用于使用静态代码分析来查找 PHP 应用程序中的漏洞。通过对所有源代码文件进行标记和解析,RIPS 能够将 PHP 源代码转换为程序模型,并检测在程序流程中可能被用户输入(受恶意用户影响)污染的敏感接收器(潜在易受攻击的函数)。除了发现漏洞的结构化输出外,RIPS 还提供了一个集成的代码审计框架,用于进一步的手动分析。
有一个名为PHP Analyzer的静态代码分析工具。PHP Analyzer 现在是一个已弃用的项目,但您仍然可以在旧分支上访问它。
在许多类型的静态分析中,它还提供基本的自动修复功能,请参阅文档。