12

有谁知道在 Java EE 项目中检测死代码的工具?

我已经研究了很多对纯 Java 项目做得很好的工具,但似乎没有什么能真正处理包括 JSP 和 Javascript 文件的项目。例如,检测到某个 Java 方法正在使用中,因为它是从 JSP 调用的,或者检测到某个以前用作 AJAX 请求的 JSP 文件不再从任何 Javascript 调用。

谢谢。

4

2 回答 2

5

现实生活中的采样呢?将JaCoCo代理插入到您的应用程序中,运行并使用一段时间。如果您有彻底的功能测试,请运行它们。如果您有一个测试人员团队,让他们点击您的应用程序。JaCoCo 将同时记录所有执行的行(它用于代码覆盖)。

如果某些行在很长一段时间内没有执行(请记住,您必须触摸应用程序中每个可能的屏幕、调用、路径和分支),您应该检查它们是否真的死了(或者您可能只是忘记运行您的在此特定配置中的应用程序)。

可以理解这是非常脆弱的,但我认为你不会发现任何自动的东西。

于 2011-08-10T20:16:00.067 回答
0

我建议使用 JVM 标志-verbose:classhttp://java.dzone.com/articles/how-use-verbose-options-java)。它将启用有关 JVM 加载的类的日志记录信息,例如。

[Loaded java.lang.Object from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded java.io.Serializable from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded java.lang.Comparable from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded java.lang.CharSequence from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]

如果某个类在很长一段时间内没有加载,那么很有可能它是未使用的。

当然,此解决方案只会为您提供有关未使用类的信息,但您不必使用任何外部库。

于 2014-10-15T09:05:50.597 回答