我必须清理一个旧项目,这里的一般知识是该项目包含许多我们可以删除的未使用的代码。这样可以省去一些麻烦并使维护更容易。
我发现Eclipse Core Tools插件看起来像一个很棒的工具,但在我们的例子中,我们有一个Maven2项目,该项目分为3个模块。 我似乎无法在父项目上运行“查找未引用的成员”,当我在其中一个模块上运行它时,它完全忽略了其他模块可能正在使用某些公共成员的事实......
任何人都克服了这个问题?或者找到另一种方法来解决这个问题?
感谢。
答案 0 :(得分:11)
当我在其中一个模块上运行时,它完全忽略了其他模块可能正在使用某些公共成员的事实......
是的,这就是问题所在,这就是为什么没有真正的确定性方法来查找this previous answer中@cletus提醒的未使用的代码。
说到这里,像PMD(及其unusedcode规则),Findbugs这样的工具无论如何都可以帮助。像IntelliJ这样的IDE(社区版中完全可以使用Java代码检查),Eclipse也对此有很好的支持。
对于IntelliJ,请查看Global unused declaration inspection:
由于Intellij IDEA代码洞察引擎背后内部索引的改进,Maia将能够立即突出显示整个项目中未使用的一些java类,方法和字段。
对于Eclipse,有UCDetector插件:
UCDetector(Unecessary Code Detector)是一个开源的eclipse PlugIn工具,用于查找不必要的(死的)公共java代码。它还试图使代码最终,受保护或私有。
alt text http://www.ucdetector.org/images/popup.png
但我承认,我不确定这些解决方案是否真的可以跨模块运行。在这种情况下,我的建议是将所有代码放在一个“看门人”项目中(是的,这很难看但很好......)并在其上运行工具(并根据获得的结果清理模块)。
答案 1 :(得分:1)
我使用Core Tools插件在许多不同的maven模块中查找未使用的代码。必须正确设置每个项目的构建路径,以便Eclipse知道项目之间存在依赖关系。如果使用m2eclipse插件导入项目,它将自动设置它们。
我认为Core Tools插件的工作方式是自动执行“Call Hierarchy”视图执行的过程。如果没有调用者,请选择一种方法并运行“调用层次结构”(ctrl-alt-H),然后Core Tools应将该方法标记为未调用。