是否有PHP文件的静态代码分析器?二进制本身可以检查语法错误,但我正在寻找更多的东西,比如未使用的变量赋值,分配到的数组而不是首先被初始化,以及可能的代码样式警告 . 开源程序将是首选,但如果强烈推荐,我们可能会说服公司支付费用 .
从命令行以lint-mode运行php以验证语法而不执行:
php -l FILENAME
更高级别的静态分析仪包括:
php-sat - 需要http://strategoxt.org/
PHP_Depend
PHP_CodeSniffer
PHP Mess Detector
PHPStan
PHP-CS-Fixer
phan
低级分析仪包括:
PHP_Parser
token_get_all(原始功能)
运行时分析器,由于PHP的动态特性,对某些东西更有用,包括:
Xdebug有code coverage和function traces .
我的PHP Tracer Tool使用一种静态/动态组合方法,以Xdebug的函数轨迹为基础 .
文档库phpdoc和doxygen执行一种代码分析 . 例如,Doxygen可以配置为使用graphviz呈现漂亮的继承图 .
另一种选择是xhprof,类似于xdebug,但更轻,使其适用于 生产环境 服务器 . 该工具包括基于PHP的界面 .
Online PHP lint
PHPLint
Unitialized variables check . 但是,链接1和2似乎已经很好了 .
我不能说我已经集中使用了这些,但:)
为了完整性 - 还要检查phpCallGraph .
PHP Mess Detector太棒了,速度很快 .
我尝试过使用$ php -l和其他工具 . 然而,根据我的经验(YMMV,当然)中最好的是scheck of pfff toolset . 我在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,这是一个查找复制/粘贴/编辑代码的"clone detection"工具 . 尽管有空格,注释甚至可变的重命名,它仍会找到准确的和接近错过的代码片段 . 可以在wesite找到PHP的样本检测报告 . (我是作者) .
NetBeans IDE检查语法错误,未使用的变量等 . 它不是自动化的,但适用于中小型项目 .
有一个名为nWire for PHP的新工具 . 它是Eclipse PDT和Zend Studio 7.x的代码探索插件 . 它支持PHP的实时代码分析,并提供以下工具:
代码可视化 - 组件和关联的交互式图形表示 .
代码导航 - 独特的导航视图显示了所有关联,并在您编写或读取代码时与您协同工作 .
快速搜索 - 在键入方法,字段,文件等时进行搜索 .
PHP PMD(项目混乱检测器)和PHP CPD(复制粘贴检测器)作为PHPUnit的前一部分
有RIPS - A static source code analyser for vulnerabilities in PHP scripts . RIPS的来源可在SourceForge获得 .
来自RIPS网站:
RIPS是一个用PHP编写的工具,用于使用静态代码分析查找PHP应用程序中的漏洞 . 通过对所有源代码文件进行标记化和解析,RIPS能够将PHP源代码转换为程序模型,并检测在程序流程中可能被用户输入(受恶意用户影响)污染的敏感接收器(可能易受攻击的功能) . 除了发现的漏洞的结构化输出外,RIPS还提供了一个集成的代码审计框架,用于进一步的手动分析 .
此外,PHP Compiler也许值得一试 . 它的主要功能是生成PHP二进制文件,但它确实具有一些分析功能 .
静态代码分析的绝对新工具称为PHP Analyzer .
在许多类型的静态分析中,它还提供基本的自动修复功能,请参阅documentation .
更新:PHP-Analyzer现在已弃用,但您仍可以在旧版分支上访问它
您可能想尝试使用Facebook的hiphop进行编译 .
它对整个项目进行静态分析,可能是您正在寻找的 .
https://github.com/facebook/hiphop-php
13 回答
从命令行以lint-mode运行php以验证语法而不执行:
php -l FILENAME
更高级别的静态分析仪包括:
php-sat - 需要http://strategoxt.org/
PHP_Depend
PHP_CodeSniffer
PHP Mess Detector
PHPStan
PHP-CS-Fixer
phan
低级分析仪包括:
PHP_Parser
token_get_all(原始功能)
运行时分析器,由于PHP的动态特性,对某些东西更有用,包括:
Xdebug有code coverage和function traces .
我的PHP Tracer Tool使用一种静态/动态组合方法,以Xdebug的函数轨迹为基础 .
文档库phpdoc和doxygen执行一种代码分析 . 例如,Doxygen可以配置为使用graphviz呈现漂亮的继承图 .
另一种选择是xhprof,类似于xdebug,但更轻,使其适用于 生产环境 服务器 . 该工具包括基于PHP的界面 .
Online PHP lint
PHPLint
Unitialized variables check . 但是,链接1和2似乎已经很好了 .
我不能说我已经集中使用了这些,但:)
为了完整性 - 还要检查phpCallGraph .
PHP Mess Detector太棒了,速度很快 .
我尝试过使用$ php -l和其他工具 . 然而,根据我的经验(YMMV,当然)中最好的是scheck of pfff toolset . 我在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 .
结果报告如
请参阅Semantic Designs' CloneDR,这是一个查找复制/粘贴/编辑代码的"clone detection"工具 . 尽管有空格,注释甚至可变的重命名,它仍会找到准确的和接近错过的代码片段 . 可以在wesite找到PHP的样本检测报告 . (我是作者) .
NetBeans IDE检查语法错误,未使用的变量等 . 它不是自动化的,但适用于中小型项目 .
有一个名为nWire for PHP的新工具 . 它是Eclipse PDT和Zend Studio 7.x的代码探索插件 . 它支持PHP的实时代码分析,并提供以下工具:
代码可视化 - 组件和关联的交互式图形表示 .
代码导航 - 独特的导航视图显示了所有关联,并在您编写或读取代码时与您协同工作 .
快速搜索 - 在键入方法,字段,文件等时进行搜索 .
PHP PMD(项目混乱检测器)和PHP CPD(复制粘贴检测器)作为PHPUnit的前一部分
有RIPS - A static source code analyser for vulnerabilities in PHP scripts . RIPS的来源可在SourceForge获得 .
来自RIPS网站:
此外,PHP Compiler也许值得一试 . 它的主要功能是生成PHP二进制文件,但它确实具有一些分析功能 .
静态代码分析的绝对新工具称为PHP Analyzer .
在许多类型的静态分析中,它还提供基本的自动修复功能,请参阅documentation .
更新:PHP-Analyzer现在已弃用,但您仍可以在旧版分支上访问它
您可能想尝试使用Facebook的hiphop进行编译 .
它对整个项目进行静态分析,可能是您正在寻找的 .
https://github.com/facebook/hiphop-php