有效地收集有关新PHP项目内部工作的信息。工具?技术?脚本?

时间:2011-03-26 13:39:10

标签: php profiling xdebug inclued

我很快就会加入一个已经开发了几年的PHP项目。它将是巨大的,文档稀少,许多文件,成堆的代码,没有合理的质量水平。

您将如何收集尽可能多的有关正在发生的事情的信息?

  • 预计不会进行自动加载 至少没有广泛,所以 inclued可能会做得很好 揭示相互依赖性。

  • phpDocumentor消化了 项目文件可能会给出一个想法 关于哪些类/方法/功能 在场。

  • 也许是phpCallGraph 方法/功能关系。

  • 使用。分析一些通用用例 XDebug获得关于。的想法 等级和概念。

  • 检查重要的日志文件...... 签出警告,弃用 用法,错误。

  • phpinfo()

  • 也许提取所有评论和 将它们处理成一个html文件。

未涵盖单位测试,数据库,....

你会做什么?您对提到的工具有什么经验可以充分利用它们?

您可以假设任何必要的条件。

哪些统计信息可用于提取?

是否有人使用这些工具?

来自"PHP Tools for quality check"

编辑

来自Bryan Waters回答的

EDIT 2

Setting up a deployment / build / CI cycle for PHP projects - suggested by Pekka

编辑3

刚刚发现Gabriele Santini的演讲PDF - “代码的统计分析 - 听取您的PHP代码”。这就像一个金矿。

5 个答案:

答案 0 :(得分:3)

我同意你的问题确实有大部分答案。

这是我可能会做的。 我可能会从Sebastian Bergman的工具开始,特别是phploc,这样你就可以了解你正在研究的混乱(代码库)的范围。它为您提供类,函数计数等,而不仅仅是代码行。

接下来,我会查看apache日志或谷歌分析,并获得前10个最常请求的PHP网址。我设置XDebug进行性能分析并运行前10个请求并获取文件,调用树。 (您可以使用缓存刻录工具查看这些内容)

最后,我将通读整个执行路径中的一个或两个跟踪,这是最具代表性的整体。我会使用我的Eclipse IDE,但打印出来并使用荧光笔进入城镇也是有效的。

如果有多个系统拼凑在一起,前10个方法可能会失败。如果每个都是一个独特的岛屿,你应该很快看到Xdebug是否排名前十的是相似的。

我会查看mysql数据库并尝试了解它们的用途,特别是查看表前缀,您可能会将几个不同的应用程序堆叠在一起。如果前十名没有触及数据库的大部分,你需要寻找子应用程序。如果您发现其他子应用程序通过xdebug探查器运行它们,然后通过其中一个代表该子应用程序的路径进行读取。

现在返回并查看phploc中的范围编号,并查看在审核期间未触及的代码库(可能是计数类或函数)的百分比。

您应该对最常运行的代码有基本的了解,并了解骨架存储的角落和缝隙数量。

答案 1 :(得分:2)

也许你可以建立一个持续的整合环境。在这个环境中,您可以收集所需的所有统计数据。

Jenkins是一个很好的CI服务器,有很多插件和文档。

答案 2 :(得分:2)

为了检查可能出现的问题(重复代码,潜在错误......),您可以使用其中一些工具:

https://stackoverflow.com/questions/4202311/php-tools-for-quality-check

HTH

PS。我不得不说,你的问题,IMO,已经包含了许多很好的答案。

答案 3 :(得分:1)

如果您正在使用统计资料,请查看衡量代码质量的CRAP指数(变更风险分析和预测)。

有两篇很好的介绍性文章:

First part
Second part

答案 4 :(得分:1)

虽然已经构建并且遭受了巨大的spaghetti-y遗留PHP项​​目,但我认为只有使用分析工具才能做到这一点。他们中的大多数人只会告诉你这个项目质量很糟糕:)。

单元测试和源代码文档工具通常需要在代码中做出一些积极贡献才能产生可​​用的结果。也就是说,他们都值得一试 - 我不熟悉phpCallGraph和Sebastian Bergmann的工具。此外,phpDocumentor可能能够从代码的至少一部分中获得一些意义。 PHPXref也是一个很酷的工具,可以获得概述,here's一个(慢)演示。

开始的最佳方式可能是完成一项需要在代码库中完成的简单任务,并在丛林中进行战斗,按照包含,尝试掌握库结构等,直到工作完成。如果您加入团队,也许附近有人可以寻求指导。

我会集中精力让探索过程尽可能方便。一些(微不足道的)要点包括:

  • 使用可快速将您带入功能/方法,类和变量定义的IDE

  • 运行调试程序

  • 绝对将所有内容保持在源代码管理下并提交每项更改

  • 拥有一个环境,允许您轻松部署更改以进行测试,并轻松切换到其他分支或完全撤回所有内容。以下是有关如何设置类似内容的相关问题:Setting up a deployment / build / CI cycle for PHP projects