有没有人知道在Java EE项目中检测死代码的工具?
我已经研究了很多为纯Java项目做得很好的工具,但似乎没有什么能真正处理包含JSP和Javascript文件的项目。例如,检测到Java方法正在使用中,因为它是从JSP调用的,或者检测到以前用作AJAX请求的某个JSP文件不再从任何Javascript中调用。
感谢。
答案 0 :(得分:5)
真人抽样怎么样?插件JaCoCo代理到您的应用程序,运行它并使用它一段时间。如果您有彻底的功能测试,请运行它们。如果您有一组测试人员,请让他们点击您的应用程序。在此期间,JaCoCo将记录所有已执行的行(它用于代码覆盖)。
如果在很长一段时间内没有执行某些行(请记住,您必须触摸应用程序中的每个可能的屏幕,呼叫,路径和分支),您应该检查它们是否实际上已经死亡(或者您可能只是忘记了在这个特定的配置中运行你的应用程序。)
可以理解这是非常脆弱的,但我认为你不会发现任何自动的东西。
答案 1 :(得分:0)
我建议使用JVM标志-verbose:class
(http://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]
如果某个课程在很长一段时间内没有加载,那么很可能它没有被使用。
当然,此解决方案仅提供有关未使用类的信息,但您不必使用任何外部库。