1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
|
<!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.2.0.zip"><!-- checker-framework-zip-version -->checker-framework-3.2.0.zip<!-- /checker-framework-zip-version --></a>
(<!-- checker-framework-date -->2 Mar 2020<!-- /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.txt">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-to-annotate">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.9.6.zip"><!-- annotation-tools-zip-version -->annotation-tools-3.9.6.zip<!-- /annotation-tools-zip-version --></a> (<!-- afu-date -->02 Mar 2020<!-- /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.txt">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 -->2 Mar 2020<!-- /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
-->
|