创建最终调用指定方法的 java 方法列表

Create a list of java methods that ultimately call a specified method

我的任务是在大型 Java 应用程序中找到所有最终调用需要重构的特定方法的方法。

澄清一下,如果目标方法是 "fixme",并且 "fixme" 被 "a"、"b" 和 "c" 调用,但是 "a" 被 "d" 和 "e" 调用; "b" 被 "d"、"f"、"g"、"h"、"i" 调用; "c" 被 "j" 和 "k" 调用。然后 "d" 被...调用,等等。 所以我们有

k calls c calls fixme
g calls b calls fixme

等等。

这些调用的深度 "chains" 可以变得相当深,有几十个直接调用 "fixme",因此手动解决方案需要一段时间。这不会是唯一的重构任务。

所以 - 我正在寻找一种工具或策略,可以在我懒洋洋地观看的同时完成这项工作。

我知道 Eclipse 等 IDE 可以让您找到对方法的引用,但这些 IDE 一次只能处理一个方法。使用跟踪消息执行代码需要完整的代码覆盖,这是不可行的(也不可靠,因为我可能会错过一个)。我真的在寻找某种具有这种功能的静态代码分析器。

Eclipse 可以做到这一点。在 eclipse 调用视图中(光标位于方法上时按 CTRL+ALT+H)您可以展开每个节点,以查看完整的调用堆栈。

全部展开后,右键单击顶部节点并select "Copy expanded hierarchy"。

此解决方案的唯一问题是我无法找到 auto-expand 它的方法,因此每次调用都必须单击一次。