我正在重构一些 Java 代码,通过将一些静态方法调用更改为非静态调用来更加解耦,例如:
// Before:
DAO.doSomething(dataSource, arg1, ..., argN)
// After:
dao.doSomething(arg1, ..., argN)
我的问题是,在大型项目中,很难找到进行静态方法调用的位置。有没有一种简单的方法可以从命令行或在 Eclipse 中执行此操作?
这样的工具需要让我忽略诸如此类的“良性”静态方法调用(要么首先不找到它们,要么允许它们从搜索结果中轻松删除):
String.valueOf(...)
Integer.parseInt(...)
MyClass.someBenignStaticMethod(...)
一些澄清:
- 我对查找通过反射进行的方法调用不感兴趣
- 我不知道这个项目中目前存在哪些静态方法,所以它不像使用 Eclipse 的“Open Call Hierarchy”命令(Ctrl-Alt-H)搜索调用者那么简单,尽管搜索非私有的简单方法静态方法会让我使用这种方法
- 我也有兴趣找到对位于我的项目之外的静态方法的调用,例如 javax.mail.Transport#send
- 我正在寻找免费(如啤酒)解决方案