As said below, static analysis of public, protected or package-private dead code in a java application is the almost unique feature of DCD.
Public and protected dead code is a unique feature of DCD in a headless or no-eclipse world.
| Rule or Feature | DCD | Eclipse/NetBeans | Findbugs | Checkstyle | PMD | Lint4j | UCDetector (eclipse plugin) |
|---|---|---|---|---|---|---|---|
| Dead private methods and fields | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Dead package-private methods and fields | ![]() | ![]() | ![]() | ![]() | ![]() | (*)
| ![]() |
| Dead public or protected methods and fields | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Dead local variable | ![]() | ![]() | (DLS)
| ![]() | ![]() | ![]() | ![]() |
| Self assignment | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| String toString | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Useless initialization | ![]() | ![]() | ![]() | ![]() | ![]() | (**)
| ![]() |
| Xml report | ![]() | - | ![]() | ![]() | ![]() | ![]() | ![]() |
| Maven report plugin | not currently
| - | ![]() | ![]() | ![]() | ![]() | ![]() |
Legend:
The feature exists
The feature exists, but is buggy or not well tested
The feature doesn't exist
(*) : Lint4j feature on package-private methods is slow, with bugs on generics. Lint4j is not maintained and not open-sourced.
(**) : Lint4j feature on useless initialization is buggy, for example on "private Boolean b = false;".
If I made an error, please send me an email at evernat@dev.java.net
Of course, Findbugs, Checkstyle, PMD and Lint4j have a lot of other rules and features, such as IDE or Continuous Integration plugins.