In "put your code on the couch", Frank Kelly writes about how he likes it when tools can find problems in his code for him. In the blog entry, Frank cites, three tools that he uses that do just that. The advantages of using tools like CheckSyle, PMD, FindBugs etc is that they help you find problems sooner than later.
Best of all - if you use these tools regularly, little by little you start writing code that will pass their checks without thinking about it - and *bam!* you're a better programmer!
From each tool his lists his favorite checks. These checks include; missing package documentation, missing break in switch statements, excessive class length, inconsistent synchronization in a class and a number of others. All of these tools are available as open source and as Frank put it; "It's like pair programming in XP without the other person ;-)"