[Rd] wishlist: better error message in R CMD check
Uwe Ligges
ligges at statistik.uni-dortmund.de
Sun Nov 7 13:06:23 CET 2004
Prof Brian Ripley wrote:
> On Sat, 6 Nov 2004, Uwe Ligges wrote:
>
>
>>Liaw, Andy wrote:
>>
>>
>>>Gabor,
>>>
>>>I guess is that you did not try to run R CMD INSTALL before R CMD check. R
>>>CMD check will try to install the package first (in pkg.Rcheck), and only if
>>>that's successful would checks be done.
>>>
>>>The installation process will concatenate all R files in R/ to a single file
>>>and essentially source() that in upon package loading. That's where you
>>>would see the syntax error. I believe the recommended way is to install the
>>>package and play with that a bit first, before doing R CMD check. You'd
>>>find some problems are much easier to find that way (e.g., errors in
>>>NAMESPACE).
>
>
> Indeed, that is the advice: you often get much more informative error
> messages that R CMD check hides. To be explicit, install and then load
> the package and check its basic functionality before R CMD check.
>
> However, if you get a syntax error it is either in the NAMESPACE file or
> one of the *.R files, and sourcing all of them will rapidly find which.
>
>
>>>>From: Gabor Grothendieck
>>>>
>>>>I was running R CMD check on Windows XP 2.0.1beta and
>>>>got this:
>>>>
>>>>Error in parse(file, n, text, prompt) : syntax error on 602
>>>
>>I found that syntax errors quite frequently are caused by missing
>>newlines at the end of files.
>>What about changing the build scipts so that a newline is inserted after
>>each of those files?
>
>
> Time to get a better editor, Uwe! Those I use do not allow you to
> save a .R file without a final NL. (I would have thought you would have
> learned not to leave an incomplete last line after being bitten a few
> times. In Emacs, set `Require Final Newline', and it's the default in
> vi.)
Well, you already know I'm using WinEdt which also saves .R files
without final newline, but, e.g., Windows' native notepad.exe leaves the
final line as is ...
> However, this is not done by the `build scipts' (or even scripts) but
> by tools:::.install_package_code_files() at
>
> if(!all(file.append(outFile, codeFiles)))
> stop("unable to write code files")
>
> So that is the place to alter this. There would be a small overhead both
> at INSTALL time and load time (but the latter only for packages which are
> not save-imaged or lazy-loaded), I suspect a negligible one. In any case
> file.append could be written more efficiently for this case (outFile is
> opened for each of the codeFiles) with making sure each file ended in LF
> made an option.
Have not looked that closely - I will put it on my ToDo list, but with a
minor priority, i.e. it won't be done this year, if nobody else (like
those bitten by the problem) is going to contribute.
Uwe
More information about the R-devel
mailing list