在大型java项目中,您使用什么工具来查找未使用的/死亡的代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难。但是,我们会尽量删除未使用的代码。
对于一般策略/技术(而不是特定工具)的建议也很感激。
编辑:请注意,我们已经使用了代码覆盖工具(Clover, IntelliJ),但这些帮助不大。死代码仍然有单元测试,并显示为已覆盖。我想理想的工具应该是识别那些依赖于它的其他代码很少的代码集群,从而允许手动检查文档。
在大型java项目中,您使用什么工具来查找未使用的/死亡的代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难。但是,我们会尽量删除未使用的代码。
对于一般策略/技术(而不是特定工具)的建议也很感激。
编辑:请注意,我们已经使用了代码覆盖工具(Clover, IntelliJ),但这些帮助不大。死代码仍然有单元测试,并显示为已覆盖。我想理想的工具应该是识别那些依赖于它的其他代码很少的代码集群,从而允许手动检查文档。
当前回答
Netbeans这里是一个插件的Netbeans死代码检测器。
如果它可以链接到并突出显示未使用的代码,那就更好了。你可以在这里投票和评论:Bug 181458 -找到未使用的公共类,方法,字段
其他回答
我很惊讶这里竟然没有提到ProGuard。这是目前最成熟的产品之一。
ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition. Some uses of ProGuard are: Creating more compact code, for smaller code archives, faster transfer across networks, faster loading, and smaller memory footprints. Making programs and libraries harder to reverse-engineer. Listing dead code, so it can be removed from the source code. Retargeting and preverifying existing class files for Java 6 or higher, to take full advantage of their faster class loading.
下面是列表死代码的示例:https://www.guardsquare.com/en/products/proguard/manual/examples#deadcode
Netbeans这里是一个插件的Netbeans死代码检测器。
如果它可以链接到并突出显示未使用的代码,那就更好了。你可以在这里投票和评论:Bug 181458 -找到未使用的公共类,方法,字段
使用测试覆盖工具来检测代码库,然后运行应用程序本身,而不是测试。
Emma和Eclemma将为您提供关于在任何给定的代码运行中运行的类的百分比的良好报告。
我们已经开始使用Find Bugs来帮助识别代码库中目标丰富的重构环境中的一些缺陷。我还会考虑结构101来识别代码库架构中过于复杂的地方,这样你就知道真正的沼泽在哪里。
有一个Java项目-死代码检测器(DCD)。对于源代码,它似乎工作得不太好,但对于.jar文件-它真的很好。另外,您可以通过类和方法进行过滤。