MadSeb
MadSeb

Reputation: 8254

R verify source code

Is there any way to "check" or "verify" a source code file in R when sourcing it ? For example, I have this function in a file "source.R"

MyFunction <- function(x)
{
print(x+y)
}

When sourcing "source.R", I would like to see some sort of warning : MyFunctions refers to an undefined object Y.

Any hints on how to check / verifiy R code ?

Cheers!

Upvotes: 10

Views: 476

Answers (2)

flodel
flodel

Reputation: 89097

I use a function like this one for scanning all the functions in a file:

critic <- function(file) {

   require(codetools)
   tmp.env <- new.env()
   sys.source(file, envir = tmp.env)
   checkUsageEnv(tmp.env, all = TRUE)

}

Assuming source.R contains the definitions of two rather poorly written functions:

MyFunction <- function(x) {
   print(x+y)
}

MyFunction2 <- function(x, z) {
   a <- 10
   x <- x + 1
   print(x)
}

Here is the output:

critic("source.R")
# MyFunction: no visible binding for global variable ‘y’
# MyFunction2: local variable ‘a’ assigned but may not be used
# MyFunction2: parameter ‘x’ changed by assignment
# MyFunction2: parameter ‘z’ may not be used

Upvotes: 10

Dirk is no longer here
Dirk is no longer here

Reputation: 368439

You can use the codetools package in base R for that. And if you had your code in a package, it would tell you about this:

Upvotes: 5

Related Questions