Finding bugs with FindBugs: "However, there's a class of development tool that can also be used to root out bugs before they happen, and that's a static code analysis tool. In contrast to dynamic analysis, which involves looking at code that's running, static analysis focuses on source or object code (byte code in the Java world).
One such tool is FindBugs, which analyses Java byte code to flag potential errors.