在大型java项目中,您使用哪些工具来查找未使用的/死的代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难.然而,我们确实try 删除尽可能多的未使用的代码.

对于一般策略/技术(特殊工具除外)的建议,我们也表示感谢.

Edit:请注意,我们已经使用了代码覆盖工具(Coverer,IntelliJ),但这些工具帮助不大.死代码仍然有单元测试,并且显示为被覆盖.我猜理想的工具应该是识别几乎没有其他代码依赖的代码簇,从而允许文档手动判断.

推荐答案

我会检测正在运行的系统以保持代码使用的日志(log),然后开始判断几个月或几年没有使用的代码.

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

当然,如果你在方法层面,你应该记住性能.例如,这些方法只能记录它们的首次使用.我不知道用Java怎么做最好.我们在Smalltalk中做到了这一点,Smalltalk是一种动态语言,因此允许在运行时修改代码.我们使用一个日志(log)调用来检测所有方法,并在方法第一次被记录后卸载日志(log)代码,因此在一段时间后不会出现更多性能损失.也许在Java中可以用静态布尔标志做类似的事情...

Java相关问答推荐

获取拦截器内部的IP地址

我们如何直接使用kerminldap服务票证来通过ldap进行身份验证并形成LDAP上下文

将linkedHashMap扩展到Java中的POJO类

我的scala文件失败了Scala.g4 ANTLR语法

Java 8中的多个字段和计数

关于泛型的覆盖规则

对于几乎不涉及逻辑的请求,您是否应该使用命令模式?

使用Jolt将字段转换为列表

try 在Android Studio中的infoWindow中使用EditText(Java)

在Java中将int[]矩阵添加到ArrayList中,但出现错误

如何在JUNIT测试中覆盖ExecutorService?

如何在太阳系模拟器中添加月球?

Oj算法 MatrixR032从字符串、归一化和余弦相似度计算创建

如何在Record Java中使用isRecord()和RecordComponent[]?

持续时间--为什么在秒为负数的情况下还要做额外的工作?

无法在IntStream上应用Collectors.groupingBy

谷歌应用引擎本地服务器赢得';t在eclipse上运行

如何在MPAndroidChart中的条形图上正确添加标签

Eureka客户端无法使用用户/通行证注册到Eureka服务器

始终使用Spring Boot连接mongodb上的测试数据库