是否有任何工具可以检测不再使用的代码/function?

我们有许多应用程序正在运行(考虑所有这些应用程序都在Java平台上运行),我们需要检查最后一个,比如说3个月使用哪些应用程序,以及在这些活动应用程序中,哪些部分/function(以及频率)是还在使用。 那可能吗?

这里的目标是检测不再与业务相关的应用程序或function并删除它们,这样我们最终可以减少维护和监视的代码。

是否有任何工具可以帮助我们实现这一目标?


我们使用敏捷方法,因此当新应用程序投入生产时,它只具有对业务很重要的function,但有时这个应用程序的某些function会过期(出于不同的原因),所以我们希望有一种识别方法那。

您可以在应用程序中部署至少两个工具并收集一些统计信息,即使在生产中也是如此:

  1. AspectJ – 编织所有类并以某种方式记录每个方法执行。

  2. JaCoCo – 基本上做同样的事情,但在Java代理的帮助下自动完成。 执行的方法/分支(实际上,这是一个代码覆盖工具)保存在文件中以供将来处理。 应该很容易解决你的问题。

这两种方法都适用于任何JVM语言(我在你的问题中看到jruby ),因为它们在字节码级别上工作。 我曾经在Selenium测试运行期间使用JaCoCo来测量代码覆盖率(想一想:哪些方法/分支被执行)。

例如,Intellij IDEA具有静态分析,该分析灰显未调用的类型/方法的名称。 如果您想要自动工具,请尝试Sonar 。 我想,如果你以某种forms使用reflection,这两种方法都会产生一些错误的结果。

还有PMD

顺便说一句,它可以作为不同IDE的插件安装

我还使用以下静态分析工具:

  • UCDetector (开源eclipse插件) – 非常有用。

  • Structure101 (商业软件) – 也可用于此目的(例如,查找未使用的类)。

您可以使用JArchitect工具分析代码并检测未使用的代码和function,其中包含一些function:

  • 代码查询语言(CQLinq),
  • 超过80个指标,
  • 并在不同类型的图表中显示分析结果