| 42333 |
ripley |
1 |
% File src/library/tools/man/codoc.Rd
|
| 68948 |
ripley |
2 |
% Part of the R package, https://www.R-project.org
|
| 59039 |
ripley |
3 |
% Copyright 1995-2009 R Core Team
|
| 42333 |
ripley |
4 |
% Distributed under GPL 2 or later
|
|
|
5 |
|
| 16493 |
hornik |
6 |
\name{codoc}
|
| 56186 |
murdoch |
7 |
\alias{codoc}
|
| 25807 |
hornik |
8 |
\alias{codocClasses}
|
|
|
9 |
\alias{codocData}
|
| 16493 |
hornik |
10 |
\alias{print.codoc}
|
| 25807 |
hornik |
11 |
\alias{print.codocClasses}
|
|
|
12 |
\alias{print.codocData}
|
| 16493 |
hornik |
13 |
\title{Check Code/Documentation Consistency}
|
|
|
14 |
\usage{
|
| 16670 |
hornik |
15 |
codoc(package, dir, lib.loc = NULL,
|
| 26963 |
hornik |
16 |
use.values = NULL, verbose = getOption("verbose"))
|
| 25807 |
hornik |
17 |
codocClasses(package, lib.loc = NULL)
|
|
|
18 |
codocData(package, lib.loc = NULL)
|
| 16493 |
hornik |
19 |
}
|
|
|
20 |
\description{
|
| 42961 |
ripley |
21 |
Find inconsistencies between actual and documented \sQuote{structure}
|
| 25807 |
hornik |
22 |
of \R objects in a package. \code{codoc} compares names and
|
|
|
23 |
optionally also corresponding positions and default values of the
|
| 25814 |
hornik |
24 |
arguments of functions. \code{codocClasses} and \code{codocData}
|
| 25807 |
hornik |
25 |
compare slot names of S4 classes and variable names of data sets,
|
|
|
26 |
respectively.
|
| 16493 |
hornik |
27 |
}
|
|
|
28 |
\arguments{
|
| 16572 |
hornik |
29 |
\item{package}{a character string naming an installed package.}
|
| 16493 |
hornik |
30 |
\item{dir}{a character string specifying the path to a package's root
|
|
|
31 |
source directory. This must contain the subdirectories \file{man}
|
|
|
32 |
with \R documentation sources (in Rd format) and \file{R} with \R
|
| 16572 |
hornik |
33 |
code. Only used if \code{package} is not given.}
|
| 16670 |
hornik |
34 |
\item{lib.loc}{a character vector of directory names of \R libraries,
|
|
|
35 |
or \code{NULL}. The default value of \code{NULL} corresponds to all
|
|
|
36 |
libraries currently known. The specified library trees are used to
|
| 43623 |
hornik |
37 |
search for \code{package}.}
|
| 26818 |
maechler |
38 |
\item{use.values}{if \code{FALSE}, do not use function default values
|
|
|
39 |
when comparing code and docs. Otherwise, compare \emph{all} default
|
|
|
40 |
values if \code{TRUE}, and only the ones documented in the usage
|
|
|
41 |
otherwise (default).}
|
| 16493 |
hornik |
42 |
\item{verbose}{a logical. If \code{TRUE}, additional diagnostics are
|
|
|
43 |
printed.}
|
|
|
44 |
}
|
| 26543 |
maechler |
45 |
\note{
|
| 26818 |
maechler |
46 |
The default for \code{use.values} has been changed from
|
|
|
47 |
\code{FALSE} to \code{NULL}, for \R versions 1.9.0 and later.
|
| 26543 |
maechler |
48 |
}
|
| 16493 |
hornik |
49 |
\details{
|
| 25807 |
hornik |
50 |
The purpose of \code{codoc} is to check whether the documented usage
|
| 16493 |
hornik |
51 |
of function objects agrees with their formal arguments as defined in
|
|
|
52 |
the \R code. This is not always straightforward, in particular as the
|
| 16572 |
hornik |
53 |
usage information for methods to generic functions often employs the
|
|
|
54 |
name of the generic rather than the method.
|
| 16493 |
hornik |
55 |
|
| 16572 |
hornik |
56 |
The following algorithm is used. If an installed package is used, it
|
| 43623 |
hornik |
57 |
is loaded (unless it is the \pkg{base} package), after possibly
|
|
|
58 |
detaching an already loaded version of the package. Otherwise, if the
|
|
|
59 |
sources are used, the \R code files of the package are collected and
|
|
|
60 |
sourced in a new environment. Then, the usage sections of the Rd
|
|
|
61 |
files are extracted and parsed \sQuote{as much as possible} to give
|
|
|
62 |
the formals documented. For interpreted functions in the code
|
|
|
63 |
environment, the formals are compared between code and documentation
|
| 83666 |
smeyer |
64 |
according to the values of the argument \code{use.values}.
|
| 16493 |
hornik |
65 |
|
| 56382 |
murdoch |
66 |
If a package has a namespace both exported and unexported objects are
|
| 30805 |
ripley |
67 |
checked, as well as registered S3 methods. (In the unlikely event of
|
|
|
68 |
differences the order is exported objects in the package, registered
|
| 56382 |
murdoch |
69 |
S3 methods and finally objects in the namespace and only the first
|
| 30805 |
ripley |
70 |
found is checked.)
|
|
|
71 |
|
| 25807 |
hornik |
72 |
Currently, the R documentation format has no high-level markup for the
|
| 42961 |
ripley |
73 |
basic \sQuote{structure} of classes and data sets (similar to the usage
|
| 27623 |
ripley |
74 |
sections for function synopses). Variable names for data frames in
|
| 42961 |
ripley |
75 |
documentation objects obtained by suitably editing \sQuote{templates}
|
| 30461 |
ripley |
76 |
created by \code{\link{prompt}} are recognized by \code{codocData}
|
| 27623 |
ripley |
77 |
and used provided that the documentation object is for a single data
|
|
|
78 |
frame (i.e., only has one alias). \code{codocClasses} analogously
|
|
|
79 |
handles slot names for classes in documentation objects obtained by
|
| 30461 |
ripley |
80 |
editing shells created by \code{\link{promptClass}}.
|
| 35433 |
ripley |
81 |
|
| 43623 |
hornik |
82 |
Help files named \file{\var{pkgname}-defunct.Rd} for the
|
|
|
83 |
appropriate \var{pkgname} are checked more loosely, as they may
|
|
|
84 |
have undocumented arguments.
|
| 16493 |
hornik |
85 |
}
|
|
|
86 |
\value{
|
| 25807 |
hornik |
87 |
\code{codoc} returns an object of class \code{"codoc"}. Currently,
|
|
|
88 |
this is a list which, for each Rd object in the package where an
|
|
|
89 |
inconsistency was found, contains an element with a list of the
|
|
|
90 |
mismatches (which in turn are lists with elements \code{code} and
|
|
|
91 |
\code{docs}, giving the corresponding arguments obtained from the
|
|
|
92 |
function's code and documented usage).
|
| 18642 |
hornik |
93 |
|
| 25807 |
hornik |
94 |
\code{codocClasses} and \code{codocData} return objects of class
|
|
|
95 |
\code{"codocClasses"} and \code{"codocData"}, respectively, with a
|
|
|
96 |
structure similar to class \code{"codoc"}.
|
|
|
97 |
|
|
|
98 |
There are \code{print} methods for nicely displaying the information
|
| 18642 |
hornik |
99 |
contained in such objects.
|
| 16493 |
hornik |
100 |
}
|
|
|
101 |
\seealso{
|
| 31146 |
hornik |
102 |
\code{\link{undoc}}, \code{\link{QC}}
|
| 16493 |
hornik |
103 |
}
|
|
|
104 |
\keyword{documentation}
|