Petr Savicky
2009-Dec-13 10:44 UTC
[Rd] R CMD check may not detect a code/documentation mismatch
For the package at
http://www.cs.cas.cz/~savicky/R-devel/something_0.0.0.tar.gz
which is a minor part of some other package only to demonstrate the
problem, i get (under R version 2.11.0 Under development 2009-12-12 r50714
and also under R-2.9.2, openSUSE 11.1 (x86_64) and CentOS release 5.2)
R CMD check something_0.0.0.tar.gz
...
* checking Rd files ... OK
* checking Rd metadata ... OK
* checking Rd cross-references ... OK
* checking for missing documentation entries ... OK
* checking for code/documentation mismatches ... OK
* checking Rd \usage sections ... OK
* checking examples ... NONE
* checking PDF version of manual ... OK
although the package code contains
testCoreNA <- function()
and the documentation contains
\usage{
testCoreClass(verbose=0)
testCoreAttrEval(verbose=0)
testCoreReg(verbose=0)
testCoreNA(verbose=0)
}
There is a mismatch between code and documentation of testCoreNA(). Is the
problem caused by having four entries in \usage{} section?
Petr Savicky.
Peter Dalgaard
2009-Dec-13 12:59 UTC
[Rd] R CMD check may not detect a code/documentation mismatch
Petr Savicky wrote:> For the package at > http://www.cs.cas.cz/~savicky/R-devel/something_0.0.0.tar.gz > which is a minor part of some other package only to demonstrate the > problem, i get (under R version 2.11.0 Under development 2009-12-12 r50714 > and also under R-2.9.2, openSUSE 11.1 (x86_64) and CentOS release 5.2) > > R CMD check something_0.0.0.tar.gz > > ... > * checking Rd files ... OK > * checking Rd metadata ... OK > * checking Rd cross-references ... OK > * checking for missing documentation entries ... OK > * checking for code/documentation mismatches ... OK > * checking Rd \usage sections ... OK > * checking examples ... NONE > * checking PDF version of manual ... OK > > although the package code contains > > testCoreNA <- function() > > and the documentation contains > > \usage{ > testCoreClass(verbose=0) > testCoreAttrEval(verbose=0) > testCoreReg(verbose=0) > testCoreNA(verbose=0) > } > > There is a mismatch between code and documentation of testCoreNA(). Is the > problem caused by having four entries in \usage{} section?Hmm, looks more like a thinko in this code inside codoc(): functions_in_code <- Filter(function(f) { f <- get(f, envir = code_env) is.function(f) && (length(formals(f)) > 0L) }, objects_in_code) which, further down the line, causes functions with no formal arguments to be skipped when compared to the usage section. Browse[2]> debug: ind <- (!functions %in% functions_to_be_ignored & functions %in% functions_in_code) Browse[2]> functions [1] "testCoreClass" "testCoreAttrEval" "testCoreReg" "testCoreNA" Browse[2]> debug: bad_functions <- mapply(functions[ind], exprs[ind], FUN = function(x, y) check_codoc(x, as.pairlist(as.alist.call(y[-1L]))), SIMPLIFY = FALSE) Browse[2]> ind [1] TRUE TRUE TRUE FALSE I.e. testCoreNA is never tested by check_codoc. There may of course be a rationale for this, but it escapes me... -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907