blob: c415978229f89c9ba497386378a1ca5d3c1f43ad [file] [log] [blame]
\documentclass[10pt]{report}
\input{manual-style.tex}
\title{The Checker Framework Manual: \\ Custom pluggable types for Java}
\author{\url{https://checkerframework.org/}}
\newcommand{\ReleaseVersion}{3.13.0}
\newcommand{\ReleaseInfo}{3.13.0 (3 May 2021)}
\date{Version \ReleaseInfo{}}
\begin{document}
%%% TODO: This file no longer exists on buffalo; must find a new file to test.
%% Releases are made on buffalo, so this macro is really saying
%% "released version of the CF" as opposed to a development version.
\newif\ifonbuffalo
%HEVEA\makeatletter\@iffileexists{/scratch/secs-jenkins/java/jdk1.7.0/LICENSE}{\onbuffalotrue}{\onbuffalofalse}\makeatother
%BEGIN LATEX
\IfFileExists{/scratch/secs-jenkins/java/jdk1.7.0/LICENSE}{\onbuffalotrue}{\onbuffalofalse}
%END LATEX
\begin{center}
%HEVEA\imgsrc{CFLogo.png}
%BEGIN LATEX
\includegraphics{../logo/Logo/CFLogo.pdf}
%END LATEX
\end{center}
% Permit text on title page by making \newpage a no-op while running \maketitle
{\let\newpage\relax \maketitle}
\noindent
\textbf{For the impatient:}
Section~\refwithpageparen{installation}
describes how to \textbf{install and use} pluggable type-checkers.
%HEVEA This manual is also available in \href{https://checkerframework.org/manual/checker-framework-manual.pdf}{PDF}.
%HEVEA \setcounter{tocdepth}{1}
% Not supported by Hevea, so don't bother: \dominitoc
\tableofcontents
\newpage
\input{introduction.tex}
%% Checkers
% If you add a new checker, also update the lists in introduction.tex and
% advanced-features.tex .
\input{nullness-checker.tex}
\input{map-key-checker.tex}
\input{optional-checker.tex}
\input{interning-checker.tex}
\input{lock-checker.tex}
\input{index-checker.tex}
\input{called-methods-checker}
\input{fenum-checker.tex}
\input{tainting-checker.tex}
% These are focused on strings:
\input{regex-checker.tex}
\input{formatter-checker.tex}
\input{i18n-format-checker.tex}
\input{propkey-checker.tex}
\input{signature-checker.tex}
\input{guieffect-checker.tex}
\input{units-checker.tex}
% These are focused on ints:
\input{signedness-checker.tex}
% Checkers that tend to be used as components of other checkers rather
% than used for their own sake:
\input{purity-checker.tex}
\input{constant-value-checker.tex}
\input{returns-receiver-checker.tex}
\input{reflection-checker.tex}
\input{initialized-fields-checker.tex}
\input{aliasing-checker.tex}
\input{must-call-checker.tex}
% Special subtyping checker and external checkers:
\input{subtyping-checker.tex}
\input{external-checkers.tex}
%% Advanced material
\input{generics.tex}
\input{advanced-features.tex}
\input{warnings.tex}
\input{inference.tex}
\input{annotating-libraries.tex}
\input{creating-a-checker.tex}
\input{accumulation-checker.tex}
\input{external-tools.tex}
\input{faq.tex}
\input{troubleshooting.tex}
\htmlhr
\bibliographystyle{alpha}
\bibliography{bibstring-unabbrev,types,ernst,invariants,generals,alias,concurrency,crossrefs}
\end{document}
% LocalWords: pt TODO JavaDocs Arg api HEVEA html ernst