[Rd] wishlist: better error message in R CMD check

Uwe Ligges ligges at statistik.uni-dortmund.de
Sun Nov 7 13:39:58 CET 2004


Prof Brian Ripley wrote:
> On Sun, 7 Nov 2004, Uwe Ligges wrote:
> 
> 
>>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 ...
> 
> 
> Yes, well, notepad.exe is most programmer's idea of the worst possible 
> editor.
> 
> Is it not possible to get WinEdt to make sure the final line is complete?

Arrgh, sorry, I meant  "which also saves .R files *with* final newline"!!!


> 
>>>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.
> 
> 
> It is already done in R-devel, but I had to work quite hard to make a test 
> example (I used WordPad, in the end).

Great, thanks!

Uwe



More information about the R-devel mailing list