-
Notifications
You must be signed in to change notification settings - Fork 353
/
checker-framework-webpage.html
260 lines (224 loc) · 8.8 KB
/
checker-framework-webpage.html
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
259
260
<!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>
<p>
<b>Quick start</b>: go directly to the
<a
href="manual/#installation"><b>Installation
instructions and tutorial</b></a>.
</p>
<ul>
<li>
Download: <a href="checker-framework-2.5.7.zip"><!-- checker-framework-zip-version -->checker-framework-2.5.7.zip<!-- /checker-framework-zip-version --></a>
(<!-- checker-framework-date -->4 Nov 2018<!-- /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 text 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.8.2.zip"><!-- annotation-tools-zip-version -->annotation-tools-3.8.2.zip<!-- /annotation-tools-zip-version --></a> (<!-- afu-date -->04 Nov 2018<!-- /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 -->4 Nov 2018<!-- /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
-->