Jlint
Static analyzer for Java bytecode
Jlint will check your Java code and find bugs, inconsistencies and synchronization problems by doing data flow analysis on the code and building the lock graph. Jlint is fast, easy to learn, and requires no changes in the class files to be checked.