The Checker Framework
Are you tired of null pointer exceptions, unintended side effects, SQL
injections, concurrency errors, mistaken equality tests, and other run-time
errors that appear during testing or in the field?
The Checker Framework enhances Java’s type system to make it more powerful
and useful. This lets software developers detect and prevent errors in
their Java programs. The Checker Framework includes compiler plug-ins
("checkers") that find bugs or verify their absence. It also permits you
to write your own compiler plug-ins.
Quick start: go directly to the
instructions and tutorial.
1.8.3, 1 Jul 2014
(includes source, platform-independent binary, tests, and documentation)
Then, see the installation
instructions and tutorial.
Source code repository (at Google Code): http://code.google.com/p/checker-framework/
The Checker Framework Manual contains instructions on building from source.
- Inference tools automatically add annotations to your code,
making it even easier to start using the checkers. You must
download these tools separately.
- Optional related tools:
- The Annotation File Utilities
extract annotations from, and write annotations to,
It also provides a representation (called
an “annotation file”) for annotations that is outside the source code or
.class file. The tools support both Java 5
annotations, and the type annotations defined in JSR 308.
- The Type annotations compiler
is fully backward-compatible. You can use it in place
of javac without any change in behavior, except that you will be permitted
to place annotations in more locations (or in comments) and to use
type-checking plug-ins that take advantage of those new locations.
Most users don't need it, since a compiled version (without source
code) is already included in the Checker Framework distribution.
About the Checker Framework itself:
pluggable types for Java (a paper presented at the
ISSTA 2008 conference) describes the design of the
Checker Framework, and case studies that found bugs in
real programs and yielded new insights about type
and using pluggable type-checkers (a paper presented
at the ICSE 2011 conference) evaluates the ease of
pluggable type-checking with the Checker Framework. The
type-checkers were easy to write, easy for novices to use,
and effective in finding hundreds of errors in case
studies of 2 million lines of code.
About type systems evaluated using the Checker Framework:
Support and community
If you have a question, then first see whether your question is
answered in one of the manuals listed under
If none of those documents answers your question, then use one of the
We welcome questions, suggestions, patches, reports about case
and other contributions.
Please let us know how we can improve the Checker Framework!
You can also use the mailing lists to give help. Here are just a
- Respond to questions.
- Report problems (in the implementation or the documentation) or request features.
- Write code, then share your bug fixes, new features, compiler plug-ins,
or other improvements.
- Make suggestions regarding the specification.
Another way to help is to tell your friends and colleagues about the
usefulness and practicality of type annotations, or to report your
successes to the mailing lists.
To submit a bug report, use the mailing list or, preferably, the issue tracker:
Last updated: July 1, 2014