Approximately detect global and imported functions or variables from R-packages by static code analysis. Conceptually, the function inspects all files in the package R-folder and contrasts the detected (unrecognized) globals and imports against the imports listed in the NAMESPACE of the R-package. R-scripts present elsewhere in the package (i.e. not in the R-folder) are not scanned, as these are not coupled to the package NAMESPACE file.
Arguments
- pkg
character path to R-package, can be either:
a local R-package folder;
path to bundled (tar.gz) R-package on local filesystem;
remote path to bundled (tar.gz) R-package, (e.g. a remote server or the web).
- include_compiled
logical value indicating if compiled functions called with
.Call
,.C
,.External
,.Fortran
should be included as global variables.- skip_globals
optional character vector of names to skip/exclude as (unrecognized) global variables.
Value
list S3-object of class "checkglobals"
with three components:
globals
, list of class"checkglobalsg"
imports
, list of class"checkglobalsi"
missing_packages
, character vector with missing packages
for programmatic use, cast the returned S3-object with as.data.frame
, as.matrix
,
as.character
or as_vector
.
Examples
## from R-package folder
check_pkg(
pkg = system.file(
"unit_tests", "pkg", "testpkg",
package = "checkglobals"
)
)
#> ! Packages required but not installed: pkgA
#>
#> ── Unrecognized global functions or variables ──────────────────────────────────
#>
#> <name> <location>
#> %>%() functions1.R#97
#> fAttach2() aaa.R#13
#> fLoad2() functions1.R#156
#> g aaa.R#2 and 13 more...
#>
#> ── Detected imported functions or variables ────────────────────────────────────
#>
#> R6 [◼◻◻◻◻◻◻◻◻◻] 1/21
#> └─ R6Class functions1.R#139
#> checkglobals [◻◻◻◻◻◻◻◻◻◻] 0/21
#> └─ n/a
#> grid [◼◻◻◻◻◻◻◻◻◻] 1/21
#> └─ is.unit functions1.R#35
#> methods [◼◼◼◻◻◻◻◻◻◻] 3/21
#> ├─ getMethod functions1.R#73
#> ├─ setGeneric functions1.R#54
#> └─ setMethod functions1.R#55
#> parallel [◼◼◻◻◻◻◻◻◻◻] 2/21
#> └─ pvec functions1.R#94 and 1 more...
#> pkgA [◻◻◻◻◻◻◻◻◻◻] 0/21
#> └─ n/a
#> stats [◼◼◼◼◼◼◼◻◻◻] 7/21
#> ├─ aggregate functions1.R#93
#> ├─ approxfun functions1.R#77
#> ├─ coef functions1.R#75 and 1 more...
#> ├─ median functions1.R#31 and 1 more...
#> └─ sd functions1.R#161
#> stats4 [◼◼◻◻◻◻◻◻◻◻] 2/21
#> └─ coef functions1.R#75 and 1 more...
#> tools [◻◻◻◻◻◻◻◻◻◻] 0/21
#> └─ n/a
#> utils [◼◼◼◼◼◻◻◻◻◻] 5/21
#> ├─ globalVariables aaa.R#1 and 1 more...
#> ├─ head functions1.R#26
#> ├─ maintainer aaa.R#8
#> └─ tail functions1.R#71
## from bundled R-package
# \donttest{
check_pkg(
pkg = "https://cran.r-project.org/src/contrib/tinytest_1.4.1.tar.gz"
)
#> ! Packages required but not installed: tinytest
#>
#> ── Unrecognized global functions or variables ──────────────────────────────────
#>
#> ✔ None detected
#>
#> ── Detected imported functions or variables ────────────────────────────────────
#>
#> grDevices [◼◼◻◻◻◻◻◻◻◻] 2/13
#> ├─ dev.off tinytest.R#560
#> └─ pdf tinytest.R#589
#> parallel [◼◼◼◼◼◼◼◻◻◻] 7/13
#> ├─ clusterCall tinytest.R#1046
#> ├─ clusterEvalQ tinytest.R#880 and 1 more...
#> ├─ clusterExport tinytest.R#1043
#> ├─ makeCluster tinytest.R#1030
#> ├─ parLapply tinytest.R#881
#> └─ stopCluster tinytest.R#1000
#> utils [◼◼◼◼◻◻◻◻◻◻] 4/13
#> ├─ capture.output methods.R#197
#> ├─ file_test tinytest.R#570
#> ├─ getFromNamespace tinytest.R#384
#> └─ install.packages tinytest.R#1140
# }