当我运行PHPUnit测试时,Xdebug会生成一个很好的代码覆盖率报告,它准确地显示了每个PHP文件中每行代码的执行次数。
我想在正常使用一周的情况下为我的网站获得相同的报告,以便我可以在我的网站上找到可能不再使用的 PHP 行。而不是运行我的PHP代码的单元测试,它将是Web服务器,但我应该能够获得相同的报告,对吗?
如何设置 Xdebug 以在活动站点上收集数据并生成代码覆盖率报告?
我会回答我自己的问题。Xdebug 提供了一个xdebug_start_code_coverage()
调用来开始收集代码覆盖率信息,以及一个xdebug_get_code_coverage()
调用来检索有关所覆盖代码的信息。这很容易适用于单元测试,因为您通常只关心在受控情况下运行一系列测试所涵盖的代码。(打开覆盖率,运行测试,然后获得覆盖率结果。但是对于 Web 服务器应用程序上的任意命中,您可能需要在 preDispatch 中启动代码覆盖率,然后让 postDispatch 将统计信息写入数据库(或以其他方式存储它们),以便稍后您可以将结果整理成报告。这不是由Xdebug处理的。
Xdebug 可以收集 cachegrind 格式的分析信息,所以我看看是否可以使用它来帮助查找尚未调用的代码。