是否有一个静态代码分析器的PHP文件?
有没有PHP文件的静态代码分析器? 二进制本身可以检查语法错误,但是我正在寻找更多的东西,比如未使用的variables赋值,分配到的数组,而不是首先被初始化,以及可能的代码样式警告。 开源计划是首选,但如果强烈build议,我们可能会说服公司支付一些东西。
从命令行以lint模式运行php以validation语法而不执行:
php -l FILENAME
更高级的静态分析仪包括:
- php-sat – 需要http://strategoxt.org/
- PHP_Depend
- PHP_CodeSniffer
- PHP杂乱检测器
- PHPStan
低级分析仪包括:
- 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现在已被弃用的项目,但你仍然可以在传统的分支上访问它