| <!DOCTYPE html> |
| <html> |
| <head><link rel="icon" type="image/png" href="favicon-checkerframework.png" /> |
| <title>The Checker Framework</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| </head> |
| <body> |
| |
| <img src="CFLogo.png" alt="Checker Framework logo" /> |
| |
| <h1>The Checker Framework</h1> |
| |
| <p> |
| 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? |
| </p> |
| |
| <p> |
| 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. |
| </p> |
| |
| <ul> |
| <li> |
| Quick start: see the |
| <a href="manual/#installation"><b>Installation instructions and tutorial</b></a>. |
| </li> |
| <li> |
| Download: <a href="checker-framework-3.13.0.zip"><!-- checker-framework-zip-version -->checker-framework-3.13.0.zip<!-- /checker-framework-zip-version --></a> |
| (<!-- checker-framework-date -->3 May 2021<!-- /checker-framework-date -->); |
| includes source, platform-independent binary, tests, and documentation.<br/> |
| Then, see the <a |
| href="manual/#installation"><b>installation |
| instructions and tutorial</b></a>. |
| </li> |
| |
| <li> |
| Documentation: |
| <!-- Keep this in sync with the list below. --> |
| <ul> |
| <li> |
| <a href="manual/">Checker Framework Manual (HTML)</a> |
| </li> |
| <li> |
| <a href="manual/checker-framework-manual.pdf">Checker Framework Manual (PDF)</a> |
| </li> |
| <li> |
| <a href="manual/#installation">Installation instructions</a><br/> |
| or, try it without installation at the |
| <a href="http://eisop.uwaterloo.ca/live/">Checker Framework Live Demo</a> |
| webpage |
| </li> |
| <li> |
| <a href="tutorial/">Tutorial</a> with Nullness Checker, Regex Checker, and Tainting checker<br/> |
| (There is also an older external <a href="https://github.com/glts/safer-spring-petclinic/wiki">Nullness Checker tutorial</a> whose setup information is out of date.) |
| </li> |
| <li> |
| <a href="manual/#faq">FAQ (Frequently Asked Questions with answers)</a> |
| </li> |
| <li> |
| <a href="api/">Javadoc</a> API documentation |
| </li> |
| <li> |
| <a href="CHANGELOG.md">Changelog</a> |
| </li> |
| </ul> |
| </li> |
| |
| <li> |
| Source code repository (at GitHub): <a href="https://github.com/typetools/checker-framework/">https://github.com/typetools/checker-framework/</a><br/> |
| The Checker Framework Manual contains <a href="manual/#build-source">instructions on building from source</a>.<br/> |
| Also see the <a href="https://rawgit.com/typetools/checker-framework/master/docs/developer/developer-manual.html">Developer manual</a>. |
| </li> |
| |
| <!-- This paragraph appears identically at jsr308-langtools/doc/openjdk-webpage.html --> |
| <li> |
| Inference tools automatically add annotations to your code, |
| making it even easier to start using the checkers. The Checker Framework manual contains <a |
| href="manual/#type-inference-tools">a list of inference tools</a>. |
| </li> |
| |
| <li>Optional related tools: |
| <ul> |
| <li>The <a href="annotation-file-utilities/"><b>Annotation File Utilities</b></a> |
| extract annotations from, and write annotations to, |
| <code>.java</code> and <code>.class</code> files. |
| It also provides a representation (called |
| an “annotation file”) for annotations that is outside the source code or |
| the <code>.class</code> file. The tools support both Java 5 |
| declaration annotations and Java 8 type annotations. |
| <ul> |
| <li><a href="annotation-file-utilities/annotation-tools-3.13.0.zip"><!-- annotation-tools-zip-version -->annotation-tools-3.13.0.zip<!-- /annotation-tools-zip-version --></a> (<!-- afu-date -->03 May 2021<!-- /afu-date -->) |
| </li> |
| <li><a href="https://github.com/typetools/annotation-tools/">source code repository</a> |
| </li> |
| <li><a href="annotation-file-utilities/">Documentation</a> |
| is included in the zip archive and in the repository. |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| |
| <li> |
| <a href="releases/">Archive of previous releases</a> of the Checker Framework |
| </li> |
| |
| <li> |
| Research papers: See the <a |
| href="manual/#publications">Checker Framework manual</a> |
| </li> |
| |
| </ul> |
| |
| |
| |
| <hr /> |
| <h2 id="Support">Support and community</h2> |
| |
| <p> |
| If you <b>have a question</b>, then first see whether your question is |
| answered in one of the manuals listed under |
| <a href="#documentation">Documentation</a> below. |
| If none of those documents answers your question, then use one of the |
| <a href="#mailing-lists">mailing lists</a>. |
| </p> |
| |
| |
| <h3 id="documentation">Documentation</h3> |
| |
| <!-- Keep this in sync with the list above. --> |
| <ul> |
| <li> |
| Checker Framework Manual (<a href="manual/checker-framework-manual.pdf">PDF</a>, <a href="manual/">HTML</a>) |
| </li> |
| <li> |
| <a href="manual/#installation">Installation instructions</a> |
| <br/> |
| or, try it without installation at the |
| <a href="http://eisop.uwaterloo.ca/live/">Checker Framework Live Demo</a> |
| webpage |
| </li> |
| <li> |
| <a href="tutorial/">Tutorial</a> |
| Other tutorials:<ul> |
| <li> |
| <a href="https://github.com/glts/safer-spring-petclinic/wiki">Nullness Checker tutorial</a> |
| (external site, setup information is out of date) |
| </li> |
| </ul> |
| </li> |
| <li> |
| <a href="manual/#faq">FAQ (Frequently Asked Questions with answers)</a> |
| </li> |
| <li> |
| <a href="api/">Javadoc</a> API documentation |
| </li> |
| <li> |
| <a href="CHANGELOG.md">Changelog</a> |
| </li> |
| </ul> |
| |
| |
| <h3 id="bugs">Bug reports</h3> |
| |
| <p> |
| If you encounter a problem, please submit a bug report so that we can fix it. |
| To submit a bug report, read these |
| <a href="manual/#reporting-bugs">instructions</a>, and then use the <a href="https://github.com/typetools/checker-framework/issues">Checker Framework issue tracker</a>. |
| </p> |
| |
| |
| <h3 id="mailing-lists">Mailing lists</h3> |
| |
| <p> |
| We welcome questions, suggestions, patches, reports about case |
| studies, |
| and other contributions. |
| Please let us know how we can improve the Checker Framework! |
| </p> |
| |
| <ul> |
| <li> |
| <a href="https://groups.google.com/forum/#!forum/checker-framework-discuss">checker-framework-discuss</a>: |
| for general discussion about the Checker Framework for building |
| pluggable type systems |
| (<a href="https://groups.google.com/forum/#!forum/checker-framework-discuss/topics">view archives</a>, |
| <a href="https://types.cs.washington.edu/list-archives/jsr308/">view old archives</a>) |
| </li> |
| <li> |
| <a href="https://groups.google.com/forum/#!forum/checker-framework-dev">checker-framework-dev</a>: |
| to reach the developers who maintain and extend the Checker Framework |
| (<a href="https://groups.google.com/forum/#!forum/checker-framework-dev/topics">view archives</a>, |
| <a href="https://types.cs.washington.edu/list-archives/checkers/">view old archives</a>) |
| </li> |
| </ul> |
| |
| <p> |
| You can also use the mailing lists to <b>give help</b>. Here are just a |
| few examples: |
| </p> |
| <ul> |
| <li>Respond to questions.</li> |
| <li>Report problems (in the implementation or the documentation) or request features.</li> |
| <li>Write code, then share your bug fixes, new features, compiler plug-ins, |
| or other improvements.</li> |
| <li>Make suggestions regarding the specification.</li> |
| </ul> |
| |
| |
| <p> |
| 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. |
| </p> |
| |
| |
| |
| <hr /> |
| |
| <p> |
| Last updated: <!-- checker-framework-date -->3 May 2021<!-- /checker-framework-date --> |
| </p> |
| |
| </body> |
| </html> |
| <!-- |
| IGNORE Local Variables: |
| time-stamp-start: "^Last updated: " |
| time-stamp-end: "\\.?$" |
| time-stamp-format: "%:b %:d, %:y" |
| time-stamp-line-limit: -50 |
| End: |
| --> |
| |
| <!-- LocalWords: JCP wiki classfile OpenJDK javac var NonNull subcategory SCA Sep JastAdd Regex ReIm ReImInfer JavaUI |
| --> |
| <!-- LocalWords: classfiles const changelog JLS Metadata getSize sql BNF jsr |
| --> |
| <!-- LocalWords: openjdk Inv isible isibleTypeAnnotations TypeArguments |
| --> |
| <!-- LocalWords: VariableDeclaratorRest MethodOrFieldRest TypeArgument Alast |
| --> |
| <!-- LocalWords: TypeArgumentsAnnotationsLast TypeArgumentsAnnotationsFirst |
| --> |
| <!-- LocalWords: BasicType RawBasicType NonEmpty Afirst UnmodifiableList int |
| --> |
| <!-- LocalWords: monitorTemperature TemperatureException myString myObject EE |
| --> |
| <!-- LocalWords: isNonNull instanceof myNonEmptyStringSet MyObject langtools |
| --> |
| <!-- LocalWords: rc desugar txt dev Nullable codename hg |
| --> |