在大型java项目中,您使用什么工具来查找未使用的/死亡的代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难。但是,我们会尽量删除未使用的代码。

对于一般策略/技术(而不是特定工具)的建议也很感激。

编辑:请注意,我们已经使用了代码覆盖工具(Clover, IntelliJ),但这些帮助不大。死代码仍然有单元测试,并显示为已覆盖。我想理想的工具应该是识别那些依赖于它的其他代码很少的代码集群,从而允许手动检查文档。


当前回答

IntelliJ有代码分析工具,用于检测未使用的代码。你应该试着让尽可能多的字段/方法/类成为非公共的,这样会显示出更多未使用的方法/字段/类

我还会尝试找到重复的代码,作为减少代码量的一种方式。

我的最后一个建议是,尽量找到开放源代码,如果使用,会使您的代码更简单。

其他回答

我发现三叶草覆盖工具,仪器代码和突出显示的代码是使用和未使用的。不像谷歌CodePro分析,它也适用于WebApplications(根据我的经验,我可能是不正确的谷歌CodePro)。

我注意到的唯一缺点是它没有考虑Java接口。

Structure101切片透视图将给出与“主”集群没有依赖关系的类或包的“孤儿”或“孤儿组”的列表(和依赖关系图)。

Eclipse Goto Windows >首选项> Java >编译器>错误/警告 把它们都改成错误。修复所有错误。这是最简单的方法。这样做的好处是,您可以在编写代码时清理代码。

截图Eclipse代码:

我会让运行中的系统保持代码使用的日志,然后开始检查几个月或几年没有使用的代码。

例如,如果您对未使用的类感兴趣,那么所有的类都可以在创建实例时记录日志。然后,一个小脚本可以将这些日志与完整的类列表进行比较,以找到未使用的类。

Of course, if you go at the method level you should keep performance in mind. For example, the methods could only log their first use. I dont know how this is best done in Java. We have done this in Smalltalk, which is a dynamic language and thus allows for code modification at runtime. We instrument all methods with a logging call and uninstall the logging code after a method has been logged for the first time, thus after some time no more performance penalties occur. Maybe a similar thing can be done in Java with static boolean flags...

Netbeans这里是一个插件的Netbeans死代码检测器。

如果它可以链接到并突出显示未使用的代码,那就更好了。你可以在这里投票和评论:Bug 181458 -找到未使用的公共类,方法,字段