FindBugs analyzes Java applications for "bug patterns"; code idioms that are likely to be errors. It finds a variety of common
problems related to language semantics, serialization, synchronization, vulnerability to malicious code, use of APIs, etc.
FindBugs may be run from the command line, from a Swing GUI, and from a provided Ant task.