【问题标题】:Detect Dead code in Java on runtime在运行时检测 Java 中的死代码
【发布时间】:2015-11-30 10:31:44
【问题描述】:

在开发中,我们使用 EclEmma 来验证是否具有良好的测试覆盖率。由于我们现在开始一项涉及大量源文件的大型重构任务,因此必须替换大量源文件,我想知道是否可以在我们的服务器上运行类似的东西来验证我们没有忘记删除一些类或方法。

由于我们使用的框架做了很多 DI 和反射,静态代码分析无济于事。

如果我所有的类和方法都在服务器运行时被调用,是否有一些东西在 rumtime 上进行分析?

问候, 迈克尔

编辑:此分析不会在生产中运行,而是在集成/验收测试阶段。 不打算将其作为删除所有已识别类/方法的有限答案,而是作为提示/提醒要删除的内容。

编辑 2:解释为什么要关闭这个问题会很好

【问题讨论】:

  • 如何确定在试用期间没有调用代码?我认为假阳性率会很高。如果您对项目有很好的测试覆盖率,那么这很简单。如果不是,我猜你无法确定代码部分的使用,删除这些部分太危险了
  • 您不能使用配置为已删除的方法/类的内存分析器吗?如果它们被实例化,您应该会看到它们的用法,如果您已成功删除对它们的所有引用,则它们永远不会被初始化。
  • 您是否必须在生产中运行此分析,或者您是否有一个可以模拟产品使用的开发环境?如果是这样,您可以尝试使用 java.lang.Instrumentation 来记录类的使用情况。 blog.javabenchmark.org/2013/05/… 。甚至可能有一些工具可以自动为您执行此操作。
  • 顺便说一下,我建议在开发环境中运行它,因为检测会影响性能

标签: java code-coverage metrics


【解决方案1】:

试试 Cobertura 工具,它有助于更​​好地分析,但不确定它是否能满足您的需求。

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 1970-01-01
    • 2011-05-19
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多