I've recently discovered
PMD, an open source static code analysis tool for Java, and so far I'm very impressed! Basically, PMD trawls through your Java code looking for potential problems and violations of common best practises (like unused local variables, or an empty catch block) and reports on them. There's a great plugin for Eclipse (and most other popular IDEs) and from what I've seen so far, it seems like a pretty solid product.
There is a huge number of rules that it can check for you, and it's easy to customise to your liking if there are particular rules you don't necessarily agree with.
Well worth checking out.