The current implementation uses the 'closure trick' to hide all details from the user and only allows to retrieve the results of the code inspection. tracker is used to create a new environment to manage and store the results of the tracking process. The inspect function requires such an environment with the name "track" (currently mandatory). The tracker records how often each and every function was called by inspect and summarizes the results of all calls. tracker$init initializes the tracker environment. tracker$getTrackInfo returns a list with the tracked results of the inspection process.

tracker()

Methods

initinitializes the tracker environment
addFuncadd function to the inspect tracking list (internal use)
getSourcereturn the modified source code used for during inspection the specified index (internal use)
bpupdate tracking info for specified function index (internal use)
getTrackInforeturn 'trackInfo' object
isValidcheck 'trackInfo' object for conformance to class contract

Details

The 'trackInfo' S3 class object (list) has one entry for each function on the inspect list with the following elements:

src

The source code of the function.

run

The number of executions for each line of code.

graph

A matrix. Each element in the matrix counts how often a code line was called from the previous code line in the execution flow.

nrRuns

Counts how often the function was called.

funcCall

The declaration of the function.

Author

Thomas König, Klaus Jünemann & Matthias Burger

See also

inspect for the registration of functions & methods to be on the tracking list, and printHTML for displaying results

Examples


## example functions
foo <- function(x){
   y <- 0
   for(i in 1:100)
   {
      y <- y + i
   }
   return(y)
}

bar <- function(x){
   y <- 0
   for(i in 1:100)
   {
      y <- y - i
   }
   return(y)
}



##  the object name track is 'fixed' (current implementation)
track <- tracker()

##  initialize the tracker
track$init()

##  inspect the function
##  resFoo1 will contain the result of calling foo(50)
resFoo1 <- inspect(foo(50), track = track)
#> Error in testFunc(50): object 'track' not found

resFoo2 <- inspect(foo(20), track = track)
#> Error in testFunc(20): object 'track' not found

resBar1 <- inspect(bar(30), track = track)
#> Error in testFunc(30): object 'track' not found

##  get the tracked function call info for all inspect calls
resTrack <- track$getTrackInfo()

##  create HTML sites in folder <tempdir>/results for all inspect calls
printHTML(resTrack, baseDir=tempdir())