PHP文件是否有静态代码分析器?二进制本身可以检查语法错误,但我正在寻找更多的东西,比如未使用的变量赋值,分配的数组,而不是先被初始化,以及可能的代码样式警告。开源程序将是首选,但如果强烈推荐,我们可能会说服公司支付费用。
答案 0 :(得分:346)
从命令行以lint-mode运行php以验证语法而不执行:
php -l FILENAME
高级静态分析仪包括:
低级分析仪包括:
运行时分析器,由于PHP的动态特性,对某些事情更有用,包括:
文档库phpdoc和doxygen执行一种代码分析。例如,Doxygen可以配置为使用graphviz呈现漂亮的继承图。
另一个选项是xhprof,类似于xdebug,但更轻,使其适用于生产服务器。该工具包括一个基于PHP的界面。
答案 1 :(得分:38)
答案 2 :(得分:27)
为了完整性 - 还要检查phpCallGraph。
答案 3 :(得分:23)
PHP Mess Detector非常棒且速度很快。
答案 4 :(得分:17)
我尝试过使用$ php -l和其他工具。然而,根据我的经验(YMMV,当然)中最好的是scheck of pfff toolset。我在Quora(http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool)
上听说过pfff您可以编译并安装它。没有很好的软件包(在我的薄荷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.
答案 5 :(得分:14)
请参阅Semantic Designs' CloneDR,一个“克隆检测”工具,可找到复制/粘贴/编辑的代码。尽管有空格,注释甚至可变的重命名,它仍会找到精确和接近错过的代码片段。可以在wesite找到PHP的样本检测报告。 (我是作者)。
答案 6 :(得分:7)
NetBeans IDE会检查语法错误,未使用的变量等。它不是自动化的,但适用于中小型项目。
答案 7 :(得分:6)
有一个名为nWire for PHP的新工具。它是Eclipse PDT和Zend Studio 7.x的代码探索插件。它支持PHP的实时代码分析,并提供以下工具:
答案 8 :(得分:5)
PHP PMD(项目混乱检测器)和PHP CPD(复制粘贴检测器)作为PHPUnit的前一部分
答案 9 :(得分:4)
有RIPS - A static source code analyser for vulnerabilities in PHP scripts。 RIPS的来源可在SourceForge获得。
来自RIPS网站:
RIPS是一个用PHP编写的工具,用于查找PHP中的漏洞 应用程序使用静态代码分析通过标记和解析所有 源代码文件RIPS能够将PHP源代码转换为 程序模型和检测敏感的汇(可能是脆弱的 功能)可能被用户输入污染(受恶意攻击 用户)在程序流程中。除了找到的结构化输出 漏洞RIPS还提供了一个集成的代码审计框架 进一步的人工分析。
答案 10 :(得分:3)
有一种名为PHP Analyzer的静态代码分析绝对新工具。
在许多类型的静态分析中,它还提供基本的自动修复功能,请参阅documentation。
更新:PHP-Analyzer现已弃用,但您仍可以在旧版分支上访问它
答案 11 :(得分:2)