如何在 PHP 中进行静态代码分析? [关闭]

2024-05-13

有没有PHP源文件的静态分析工具?

二进制文件本身可以检查语法错误,但我正在寻找功能更多的东西,例如:

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

Run php在 lint 模式下从命令行验证语法而不执行:

php -l FILENAME

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

  • php-sat http://www.program-transformation.org/PHP/PhpSat- 需要http://strategoxt.org/ http://strategoxt.org/
  • PHP_依赖 http://pdepend.org/
  • PHP_CodeSniffer http://pear.php.net/package/PHP_CodeSniffer
  • PHP 混乱检测器 http://phpmd.org/
  • PHPStan https://github.com/phpstan/phpstan
  • PHP-CS-修复程序 https://github.com/FriendsOfPHP/PHP-CS-Fixer
  • phan https://github.com/phan/phan

较低级别的分析器包括:

  • PHP_解析器 http://pear.php.net/package/PHP_Parser
  • 令牌获取全部 http://docs.php.net/manual/en/function.token-get-all.php(原函数)

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

  • Xdebug http://www.xdebug.org/ has 代码覆盖率 http://www.xdebug.org/docs/code_coverage and 功能轨迹 http://www.xdebug.org/docs/execution_trace.
  • My PHP 跟踪工具 http://github.com/troelskn/php-tracer-weaver/tree/master使用静态/动态相结合的方法,建立在 Xdebug 的函数跟踪之上。

文档库phpdoc http://www.phpdoc.org/ and Doxygen http://www.doxygen.org/执行一种代码分析。例如,Doxygen 可以配置为呈现漂亮的继承图:Graphviz http://www.graphviz.org/.

另一种选择是xhprof http://pecl.php.net/package/xhprof,它与 Xdebug 类似,但更轻,使其适合生产服务器。该工具包括一个基于 PHP 的界面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 中进行静态代码分析? [关闭] 的相关文章

随机推荐

  • Mongoose 对 Promise 拒绝处理

    我有点与 NodeJS 中的 Promise 模式作斗争 我正在数据库中查找用户 然后使用用户引用保存新实体 但是当用户不在数据库中时 我应该返回拒绝 但我不确定如何正确执行 有没有办法做得更好 顺便说一句 对不起 咖啡脚本 User fi
  • Python 无服务器函数 Vercel - Next.js

    我发现我可以使用 Python 在内部创建一个无服务器函数Next js https nextjs org docs getting started项目 一旦部署到Vercel https vercel com 它将被转换为无服务器函数 我
  • org.springframework.security.oauth2.common.exceptions.InvalidGrantException:凭据错误

    我正在开发Spring Boot 授权服务器 OAuth 资源服务器 在这个例子中 我可以通过邮递员轻松查询spring microservices oauth 服务器并获取受保护的数据 我创建了客户端来访问邮递员正在执行的数据 但我遇到了
  • Grails 默认包名称

    我是 Grails 的新手 而且非常喜欢它 我想将我的课程放在像这样的包中org company project module model 重复对我来说很痛苦create domain class
  • 如何用X11复制到剪贴板?

    使用 OS X 上的框架 我可以使用以下命令将 PNG 复制到粘贴板 在 C 中 显然我可以将 NSPasteboard 与 Cocoa 一起使用 include
  • 为什么不能将 MYSQL 函数传递到准备好的 PDO 语句中?

    在我看来 以下脚本应该有效 stmt db gt prepare UPDATE table SET status date modified stmt gt execute array 1 NOW 但经过时NOW 进入准备好的声明中 什么也
  • python 2.7.6 if/elif/else 语句中的 isupper 函数

    我需要 str isupper 函数的帮助 我试图在 if elif else 语句中使用它 程序是这样的 String raw input Please enter a string if String 1 isupper print T
  • 如何更改每次旋转的滑动刷新布局的颜色?

    有没有人注意到SwipeRefreshLayout在 Gmail 中 它会在一次加载迭代中为每次旋转更改颜色 有谁知道如何实现它 The 文档 https developer android com reference android su
  • 返回值的复制省略和 noexcept

    我有一个这样的函数模板 template
  • 递归BBCode解析

    我正在尝试解析脚本中的 BBCode 现在 它可以无缝工作 直到我尝试缩进不仅仅是粗体或下划线的 BBCode 例如剧透 网址 字体大小等 然后它就会搞砸 这是我的代码 function parse bbcode text global d
  • 十进制如何工作?

    我查看了 C 中的十进制 但我不能 100 确定它做了什么 有损吗 在C 写作中1 0000000000001f 1 0000000000001f结果是2使用时float double得到你2 0000000000002这是正确的 是否有可
  • 如何在.NET 3.5中进行动态对象创建和方法调用

    创建类对象的代码看起来如何 string myClass MyClass 上面的类型 然后调用 string myMethod MyMethod 在那个物体上 Use Type GetType string http msdn micros
  • 使用 JAXB 编组只能包含多种子节点类型之一的 XML 节点(SharePoint 查询)

    我正在尝试创建 JAXB 带注释的类来生成基于 Microsoft SharePoint 的 XML查询模式 http msdn microsoft com en us library ms467521 28v office 14 29 a
  • Firebase setDoc() 不创建文档

    我正在使用 auth 创建一个新用户 该用户正在工作 然后使用新创建的 uid 创建一个具有相同内容的新文档 const currentUser await auth createUserWithEmailAndPassword email
  • 内置类型的成员是否已默认初始化?

    我最近遇到了我的一个类的问题 因为我没有在构造函数初始化列表中设置指向 NULL 的指针 因此当我运行程序时它包含垃圾 然而 虽然我知道在堆栈上声明但未初始化的内置类型的实例将包含随机值 但我很确定我在某处读过 因为未显式放置在构造函数初始
  • 性能计数器的性能影响是什么

    当考虑使用性能计数器作为我公司的基于 NET 的站点时 我想知道使用它们的开销有多大 我是否想让我的网站不断更新其计数器 或者我最好只在测量时更新 设置性能计数器的开销通常不够高 无需担心 设置共享内存区域和一些 NET 对象 以及 CLR
  • 避免对象突变

    我正在使用 React 和 ES6 所以我遇到了以下情况 我有一个带有对象数组的状态假设a id 1 value 1 id 2 value 2 处于以下状态Object A 然后我将列表传递给Object B通过道具 Object B 在构
  • 无法添加脚本,因为它是编辑器脚本错误

    如何在 Unity 中解决此问题 无法添加脚本 因为它是编辑器脚本 我想将此脚本从后处理中放入 Unity 但由于这个问题我不能 Unity 有特殊的文件夹名称 其中之一是 编辑 Editor 文件夹用于放置在编辑器中执行的编辑器脚本 它不
  • OpenGL ES 2.0 中的纹理点?

    我正在尝试在 OpenGL ES 2 0 中为粒子系统实现纹理点 例如点精灵 我遇到的问题是所有点都渲染为实心黑色方块 而不是正确映射纹理 我已经验证 gl PointCoord 实际上返回从 0 0 到 1 0 的 x y 值 这将映射到
  • 如何在 PHP 中进行静态代码分析? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有PHP源文件的静态分析工具 二进制文件本身可以检查语法错误 但我正在寻找功能更多的东西 例如 未使用的变量赋值 未先初始化就分配到的