是否有一种工具可以根据已知的“已使用”类检测未使用的Java代码?

时间:2011-03-29 16:20:13

标签: java refactoring

我正在寻找一种工具,它可以接受大量的类,并在给定一组种子类时搜索未使用的方法/变量。我的目标是重新重构大量的类,这样我就可以从中提取所需的东西 - 种子类使用的东西。

当我说种子类时,我指的是一组用作确定未使用内容的入口点的类。例如,如果类A调用类B而类C调用类D,但唯一的种子类是类A,那么类C和类D都应该被视为未使用的类。我正在寻找的工具应该能够根据种子类的集合给出未使用的类/方法/变量。这样的工具是否存在?

3 个答案:

答案 0 :(得分:2)

Eclipse的Java错误/警告设置将通过下面显示的未使用的本地或私人成员设置帮助您查找未使用的变量。未使用的方法通知应由类似的设置控制。

屏幕截图中突出显示的行正上方的未使用的导入设置应该有助于查找未使用的类,但不能达到您想要的比例。为了使用你的例子,我不认为Eclipse会将C或D类识别为未使用,因为我认为它不能区分“种子组”和“大组”。

screenshot of "unused member" option

答案 1 :(得分:1)

你应该看看CodePro Analytix

答案 2 :(得分:0)

Semantic Designs(我的公司)有一个Java 1.4的工具。您指定一组Java源文件,基本上是种子类。它返回两个结果:

  • 声明列表(及其精确的源代码位置) 对种子而言毫无用处 (包括死者的传递关闭)。
  • 提供的代码的修订版本,删除了死声明。

如果您喜欢在第一组中看到的内容,则可以使用修改后的代码。如果第一个集合列出了您应该使用的内容,请将其添加到种子集并再次运行。

它假设你没有使用任意反射(如果你是,只需列出那些 可能通过反思检查的类。不,没有简单的方法)。

我们正在为Java 1.5 / 6/7开发一个并希望在今年夏天完成它。如果有人感兴趣,我们可以将1.4版本用于实验。