The Jakarta General list has been yakking about PMD, a tool that scans Java source for problems like unused local variables and parameters, empty blocks (if statements, catch blocks, etc), unused private methods and so on.
I ran it on some of the code libraries from Wild5, which I consider to be crusty old stuff, but it came out pretty clean, other than a couple blocks of duplicate code between superclasses and subclasses. Of course I didn't run it on some of the hairier packages .... I also tried it on a chunk of the Catalina source code, but there was too much. Better to run it on subpackages, I guess.
PMD runs standalone, or as a plugin for JEdit, JBuilder, Eclipse, and Emacs. Worth a look. No documentation, although it's fairly easy to figure out.
Peter Donald suggests that checkstyle is more mature.