2010-02-11 51 views
9

我必须清理一个旧项目,这里的一般知识是项目包含大量可以删除的未使用代码。这将节省一些头痛,并使维护更容易。在Maven模块化项目中查找未使用的代码

我发现Eclipse Core Tools插件看起来像一个很棒的工具,但在我们的例子中,我们有一个分为3个模块的Maven2项目。 我似乎无法在父项目上运行“查找未引用的成员”,并且当我在其中一个模块上运行它时,它完全忽略了其他模块可能使用某些公共成员的事实。 。

任何人都已经克服了这个问题?或者找到了另一种方式去解决这个问题?

谢谢。

回答

9

时,我就可以完全忽略了一个事实,即其他模块可能会使用一些公众成员的一个模块运行...

是的,这就是问题所在,这就是为什么有没有真正确定性的方法来找到未被使用的代码,正如this previous answer中的@cletus提醒的那样。

说了这么多,工具如PMD(及其unusedcode规则),Findbugs可能无论如何帮助。像IntelliJ这样的IDE(Java代码检查在Community Edition中完全可用),Eclipse也对此提供了很好的支持。

的IntelliJ,看看Global unused declaration inspection

由于在IntelliJ IDEA的代码洞察引擎背后的内部指标的改善,马亚将能够即时突出显示其中有一些Java类,方法和字段在整个项目中未被使用。

对于Eclipse,有UCDetector插件:

UCDetector(不必要的代码检测器)是一个开源的Eclipse插件工具来查找不必要的(死)公共Java代码。它还试图使代码成为最终的,受保护的或私有的。

alt text http://www.ucdetector.org/images/popup.png

但我承认,我不知道如果这些解决方案将真正跨模块的工作。在这种情况下,我的建议是将所有代码放在一个“janitor”项目中(是的,这很丑,但是很好......)并运行它上的工具(并根据获得的结果清理模块)。

+0

这是一个非常好的和详细的答案。谢谢你帕斯卡。 – Lancelot 2010-02-11 18:18:11

+0

@Lancelot不客气。祝你好运! – 2010-02-11 18:22:50

1

我已经使用Core Tools插件在许多不同的Maven模块中查找未使用的代码。每个项目的构建路径都必须正确设置,以便Eclipse知道项目之间存在依赖关系。如果您使用m2eclipse插件导入项目,它将自动设置它们。

我认为Core Tools插件的工作方式是它自动执行“Call Hierarchy”视图执行的过程。选择一个方法并运行“调用层次结构”(ctrl-alt-H),如果没有调用者,那么核心工具应该将该方法标记为未调用。