Find unused classes in a Java Eclipse project

前端 未结 3 1037
时光说笑
时光说笑 2020-11-28 23:39

I have a large Eclipse project in which there exist several classes which, although they ceased to be used anywhere, were never marked @Deprecated.

How can I easily

相关标签:
3条回答
  • 2020-11-28 23:55

    ProGuard can be used to print a report of unused classes/methods. It's a pain to supply all the dependent jars to it, though.

    These options list unused classes, fields, and methods in the application mypackage.MyApplication:

    -injars      in.jar
    -libraryjars <java.home>/lib/rt.jar
    
    -dontoptimize
    -dontobfuscate
    -dontpreverify
    -printusage
    
    -keep public class mypackage.MyApplication {
        public static void main(java.lang.String[]);
    }
    
    0 讨论(0)
  • 2020-11-29 00:13

    Just use Analyze | Inspect Code with appropriate inspection enabled (Unused declaration under Declaration redundancy group).

    Using IntelliJ 11 CE you can now "Analyze | Run Inspection by Name ... | Unused declaration"

    0 讨论(0)
  • 2020-11-29 00:19

    I also like to use UCDetector:

    screenshot

    UCDetector (Unecessary Code Detector) is a Open Source eclipse PlugIn Tool to find unecessary (dead) public java code. It also tries to make code final, protected or private.

    Bonus: it can also find cyclic dependencies between classes

    (also a number of other tools -- including Findbugs -- knows how do do that too)


    Caveat: Cid mentions in the comments:

    UCDetector shall not work if there are interface implementations which will be known only at runtime.
    It incorrectly marks the implementation classes as unused.


    Update 2017: static code analysis has evolved quite a bit in 8 years.
    Using SonarLint for Eclipse, you can use the the latest SonarJava 4.6 plugin to analyze your code.
    It will find dead code.

    0 讨论(0)
提交回复
热议问题