17

我很快将加入一个经过数年开发的 PHP 项目。它将是巨大的、稀少的文档、许多文件、成堆的代码,没有一致的质量水平是可以预期的。

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

  • 不需要自动加载,至少不会广泛使用,因此包含 可能会很好地揭示相互依赖关系。

  • phpDocumentor消化项目文件可能会让您了解存在哪些类/方法/函数。

  • 也许phpCallGraph用于方法/函数关系。

  • 使用XDebug分析一些通用用例以 了解层次结构和概念。

  • 检查重要的日志文件...检查警告、不推荐使用的用法、错误。

  • phpinfo()

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

没有涵盖单元测试、数据库、....

你会怎么办?您在使用上述工具以充分利用它们方面有何经验?

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

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

有人使用过这些工具吗?

“用于质量检查的 PHP 工具”编辑

编辑 2来自 Bryan Waters 的回答:

为 PHP 项目设置部署/构建/CI 周期 - Pekka 建议

编辑 3

刚刚找到Gabriele Santini 的演讲PDF -“代码的统计分析 - 聆听您的 PHP 代码”。这就像一座金矿。

4

5 回答 5

3

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

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

接下来,我将查看 apache 日志或 google 分析并获取前 10 个请求最多的 php url。我会使用分析设置 XDebug 并运行前 10 个请求并获取文件,调用树。(您可以使用 cachegrinder 工具查看这些内容)

最后,我会通读其中一两条迹线的整个执行路径,这是最能代表整体的。我会使用我的 Eclipse IDE,但将它们打印出来并带着荧光笔去城里也是有效的。

如果有多个系统拼凑在一起,前 10 种方法可能会让您失败。您应该使用 Xdebug 快速查看前 10 个代码是否相似,如果每个都是一个独特的岛。

我会查看 mysql 数据库并尝试了解它们的全部用途,尤其是查看表前缀,您可能有几个不同的应用程序堆叠在一起。如果前 10 名没有涉及到大部分数据库,则需要寻找子应用程序。如果您发现其他子应用程序通过 xdebug 分析器运行它们,然后通读代表该子应用程序的路径之一。

现在回过头来查看 phploc 中的范围编号,看看有多少百分比的代码库(可能是计数类或函数)在您的审查期间未被触及。

您应该对最常运行的代码有一个基本的了解,并了解有多少个角落、缝隙和壁橱用于存储骨架。

于 2011-04-01T19:16:52.490 回答
2

也许您可以设置一个持续集成环境。在这种环境中,您可以收集所有您想要的统计信息。

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

于 2011-03-26T14:08:46.647 回答
2

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

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

高温高压

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

于 2011-03-28T17:49:35.690 回答
1

如果您喜欢统计数据,请查看衡量代码质量的 CRAP 指数(变更风险分析和预测)。

有两部分很好的介绍性文章:

第一部分
第二部分

于 2011-03-26T13:57:03.400 回答
1

既构建了巨大的意大利面条式遗留 PHP 项目,也遭受了这些项目的困扰,我认为使用分析工具可以做的事情只有这么多。他们中的大多数人只会告诉你这个项目质量很差:)

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

最好的开始方法可能是只做一个需要在代码库中完成的简单任务,然后在丛林中奋战,遵循包含,尝试掌握库结构等,直到完成工作。如果您要加入团队,也许附近有人可以寻求指导。

我将专注于使探索过程尽可能方便。一些(微不足道的)要点包括:

  • 使用可以快速带您了解函数/方法、类和变量定义的 IDE

  • 运行调试器

  • 绝对将所有内容置于源代码控制之下并提交所有更改

  • 拥有一个允许您轻松部署更改以进行测试的环境,并且可以轻松切换到不同的分支或完全回滚所有内容。这是关于如何设置类似内容的相关问题:为 PHP 项目设置部署/构建/CI 周期

于 2011-04-02T13:16:08.397 回答