Prevent programming errors before they happen, via easy-to-use verification

We are a group of developers who are passionate about code quality. We have built an innovative lightweight verification tool called the Checker Framework.

The Checker Framework helps you prevent bugs at development time, before they escape to production. It is based on the idea of pluggable type-checking. Pluggable type-checking replaces a programming language's built-in type system with a more powerful, expressive one.

Java's type system prevents some bugs, such as int count = "hello";. However, it does not prevent other bugs, such as null pointer dereferences, concurrency errors, disclosure of private information, incorrect internationalization, out-of-bounds indices, etc.

The Checker Framework enables you to create a more powerful type system and use it in place of Java's. The more powerful type system is not just a bug-finding tool: it is a verification tool that gives a guarantee that no errors (of certain types) exist in your program. Even though it is powerful, it is easy to use. It follows the standard typing rules that programmers already know, and it fits into their workflow. We have created around 20 new type systems, and other people have created many more.

The Checker Framework is popular: it is successfully used on hundreds of projects at Google, Amazon, Uber, on Wall Street, and in other companies from big to small. It it attractive to programmers who care about their craft and the quality of their code. The Checker Framework is the motivation for Java's type annotations feature. Talks on it have received multiple awards at conferences such as JavaOne. With this widespread use, there is a need for people to help with the project: everything from bug fixes, to new features, to case studies, to IDE integration. We welcome your contribution!

Please see our ideas list for how to get started and how to ask questions.

lightbulb_outline View ideas list


  • java


email Mailing list

Checker Framework 2019 Projects

  • Ayush Agarwal
    Android Support Annotations
    Currently, Android uses its own annotations that are similar to some in the Checker Framework. Examples include the @NonNull, @IntRange, @IntDef, and...
  • Akash Srivastava
    Annotate Apache Commons Lang with Index Checker.
    The aim of this project is to carry out a rigorous and deep case study of Index Checker by annotating Apache Commons Lang with the same. The plan of...
  • Kartikeya Goswami
    Improve Signedness Checker
    This project consists of: 1.)Allowing the Signedness Type System to capture the signedness of boxed integral types, special Java wrappers for ...
  • Maximilian Gama
    Index Checker Case Study
    Index Checker warns the user about code that can throw an IndexOutOfBoundsException. In this case study, four open source libraries will be annotated...
  • the1derer
    Nullness Checker Case Study on Bazel Build tool
    As seen on Bazel’s Issue Page, Bazel suffers from numerous NullPointerException( NPE ). These NPEs come out at runtime as RuntimeException causing a ...