Static analysis tool for Java that catches common programming mistakes at compile-time