是否有PHP文件的静态代码分析器?二进制本身可以检查语法错误,但我正在寻找更多的东西,比如未使用的变量赋值,分配到的数组,而不是先被初始化,以及可能的代码样式警告.开源程序将是首选,但如果强烈建议,我们可能会说服公司支付费用.
从命令行以lint-mode运行php以验证语法而不执行:
php -l FILENAME
更高级别的静态分析仪包括:
php-sat - 需要http://strategoxt.org/
PHP_Depend
PHP_CodeSniffer
PHP Mess Detector
PHPStan
PHP-CS-定影液
藩
低级分析仪包括:
PHP_Parser
token_get_all(原始函数)
运行时分析器,由于PHP的动态特性,对某些东西更有用,包括:
Xdebug具有代码覆盖率和功能跟踪.
我的PHP Tracer工具使用一种静态/动态组合方法,基于Xdebug的函数跟踪.
文档库phpdoc和doxygen执行一种代码分析.例如,Doxygen可以配置为使用graphviz呈现漂亮的继承图.
另一种选择是xhprof,类似于xdebug,但更轻,使其适用于生产服务器.该工具包括基于PHP的界面.
在线PHP lint
PHPLint
单位变量检查.但是,链接1和2似乎已经很好了.
我不能说我已经集中使用了这些,但:)
为了完整性 - 还要检查phpCallGraph.
PHP Mess Detector非常棒且速度很快.
我尝试过使用$ 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.
请参阅Semantic Designs的CloneDR,这是一种"克隆检测"工具,可查找复制/粘贴/编辑的代码.尽管有空格,注释甚至可变的重命名,它仍会找到精确和接近错过的代码片段.可以在wesite找到PHP的样本检测报告.(我是作者).
NetBeans IDE检查语法错误,未使用的变量等.它不是自动化的,但适用于中小型项目.
有一个名为nWire for PHP的新工具.它是Eclipse PDT和Zend Studio 7.x的代码探索插件.它支持PHP的实时代码分析,并提供以下工具:
代码可视化 - 组件和关联的交互式图形表示.
代码导航 - 独特的导航视图显示所有关联,并在您编写或读取代码时与您一起使用.
快速搜索 - 在键入方法,字段,文件等时进行搜索
PHP PMD(项目混乱检测器)和PHP CPD(复制粘贴检测器)作为PHPUnit的前一部分