如何在php中进行静态代码分析?[关闭]
-
22-08-2019 - |
题
有没有PHP源文件的静态分析工具?二进制文件本身可以检查语法错误,但我正在寻找功能更多的东西,例如:
- 未使用的变量赋值
- 未先初始化就分配到的数组
- 以及可能的代码风格警告
- ...
其他提示
为了完整性——还要检查 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 还提供了一个集成的代码审计框架 进行进一步的手动分析。