\HeaderA{undoc}{Find Undocumented Objects}{undoc}
\aliasA{print.undoc}{undoc}{print.undoc}
\keyword{documentation}{undoc}
\begin{Description}\relax
Finds the objects in a package which are undocumented, in the sense
that they are visible to the user (or data objects or S4 classes
provided by the package), but no documentation entry exists.
\end{Description}
\begin{Usage}
\begin{verbatim}
undoc(package, dir, lib.loc = NULL)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{package}] a character string naming an installed package.
\item[\code{dir}] a character string specifying the path to a package's root
source directory.  This must contain the subdirectory \file{man}
with \R{} documentation sources (in Rd format), and at least one of
the \file{R} or \file{data} subdirectories with \R{} code or data
objects, respectively.
\item[\code{lib.loc}] a character vector of directory names of \R{} libraries,
or \code{NULL}.  The default value of \code{NULL} corresponds to all
libraries currently known.  The specified library trees are used to
search for \code{package}.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
This function is useful for package maintainers mostly.  In principle,
\emph{all} user-level \R{} objects should be documented.

The \pkg{base} package is special as it contains the primitives and
these do not have definitions available at code level.  We provide
equivalent closures in environments \code{.ArgsEnv} and
\code{.GenericArgsEnv} in the \pkg{base} package that are used
for various purposes: \code{undoc("base")} checks that all the
primitives that are not language constructs are prototyped in those
environments and no others are.
\end{Details}
\begin{Value}
An object of class \code{"undoc"} which is a list of character vectors
containing the names of the undocumented objects split according to
documentation type.  This representation is still experimental, and
might change in future versions.

There is a \code{print} method for nicely displaying the information
contained in such objects.
\end{Value}
\begin{SeeAlso}\relax
\code{\LinkA{codoc}{codoc}}, \code{\LinkA{QC}{QC}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
undoc("tools")                  # Undocumented objects in 'tools'
\end{ExampleCode}
\end{Examples}

