有没有PHP源文件的静态分析工具?二进制文件本身可以检查语法错误,但我正在寻找功能更多的东西,例如:

  • 未使用的变量赋值
  • 未先初始化就分配到的数组
  • 以及可能的代码风格警告
  • ...
有帮助吗?

解决方案

从命令行以 lint 模式运行 php 以验证语法而不执行:

php -l FILENAME

更高级别的静态分析器包括:

较低级别的分析器包括:

由于 PHP 的动态特性,运行时分析器对于某些事情更有用,包括:

文档库 php文档强力氧 执行一种代码分析。例如,Doxygen 可以配置为呈现漂亮的继承图: 图形可视化.

另一种选择是 教授, ,它与 xdebug 类似,但更轻,使其适合生产服务器。该工具包括一个基于 PHP 的界面。

其他提示

在线 PHP lint

PHPLint

初始化变量检查. 。不过,链接 1 和 2 似乎已经做得很好了。

不过,我不能说我已经大量使用了其中任何一个:)

为了完整性——还要检查 phpCallGraph.

PHP 混乱检测器 很棒而且速度很快。

我尝试过使用 $php -l 和其他一些工具。然而,根据我的经验(当然是 YMMV),最好的一个是 pfff工具集检查. 。我在 Quora 上听说过 pfff(http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool)

您可以编译并安装它。没有很好的软件包(在我的 Mint Debian 上,我必须首先安装 libpcre3-dev、ocaml、libcairo-dev、libgtk-3-dev 和 libgimp2.0-dev 依赖项),但它应该值得一试。

结果报告如下

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, ,一个“克隆检测”工具,可以查找复制/粘贴/编辑的代码。尽管存在空格、注释甚至变量重命名,它仍会找到精确的和几乎未命中的代码片段。PHP 检测报告样本可以在网站上找到。(我是作者)。

NetBeans IDE 检查语法错误、未使用的变量等。它不是自动化的,但对于中小型项目来说效果很好。

有一个新工具叫 用于 PHP 的 nWire. 。它是 Eclipse PDT 和 Zend Studio 7.x 的代码探索插件。它可以对 PHP 进行实时代码分析,并提供以下工具:

  • 代码可视化 - 组件和关联的交互式图形表示。
  • 代码导航 - 独特的导航视图显示所有关联,并在您编写或阅读代码时与您配合。
  • 快速搜索 - 在键入时搜索方法、字段、文件等。

PHP PMD(项目混乱检测器)和 PHP CPD(复制粘贴检测器)作为 PHPUnit 的前一部分

RIPS - 针对 PHP 脚本中的漏洞的静态源代码分析器. 。RIPS 的来源可访问: 来源锻造.

来自 RIPS 网站:

RIPS 是一个用 PHP 编写的工具,用于查找 PHP 中的漏洞 使用静态代码分析的应用程序。通过标记和解析所有 源代码文件 RIPS能够将PHP源代码转换为 程序模型并检测敏感接收器(可能易受攻击 函数),这些函数可能受到 userinput 的污染(受恶意影响 user) 在程序流程中。除了 found 的结构化输出 漏洞 RIPS 还提供了一个集成的代码审计框架 进行进一步的手动分析。

有一个绝对新的静态代码分析工具,称为 PHP分析器.

在许多类型的静态分析中,它还提供基本的自动修复功能,请参阅 文档.

更新:PHP-Analyzer 现已弃用,但您仍然可以在旧分支上访问它

您可能想尝试使用 Facebook 的 hiphop 进行编译。

它对整个项目进行静态分析,可能就是您正在寻找的。

https://github.com/facebook/hiphop-php

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top