如何编写具有项目范围上下文而不是仅在类级别上的PHP Mess Detector规则?

时间:2013-06-21 11:01:16

标签: php phpmd

我想写一条规则来查找项目中所有公共未使用的函数。我复制并修改了原来的UnusedPrivateMethod。但是唉它工作得太好了,在项目中找到了所有的公共功能。

这样做是因为公共函数通常是从其他类调用的,并且规则的范围似乎是在类级别。因此,在每个类中,不使用公共函数,因此也是结果的一部分。

因此,我如何编写一个规则,其中包含项目级别的上下文,而不仅仅是在类级别?

2 个答案:

答案 0 :(得分:2)

只能通过解析项目源代码来获取所有公共方法调用,因为可以使用

进行一些调用
call_user_func()

$object->$method()

我建议你尽可能完整地进行单元测试。执行它们时,您将获得代码覆盖率统计信息。它可以以易于阅读的形式呈现。您将看到调用哪些方法以及哪些方法未被使用。

是的,您将不得不花一些时间编写这些单元测试。但这完全是值得的。

查看php unit testingcode coverage

答案 1 :(得分:2)

我有一段时间遇到同样的问题,最后为此做了动态代码分析。基本上我运行我的网站一段时间,并有xdebug输出使用文件。为了解析所有这些,我创建了一个小工具PHPAnalyzer,它遍历这些文件并输出所有使用(或未使用)函数的统计信息。在这个统计数据中是它被调用的次数。该工具并没有真正完善,欢迎任何贡献。