--- title: "R CMD Issues" output: rmarkdown::html_vignette: toc: true toc_depth: 2 vignette: > %\VignetteIndexEntry{R CMD Issues} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` # Common R CMD Check Issues `R CMD check` is a command line tool that checks R packages against a standard set of criteria. For a pull request to pass the check must not issue any notes, warnings or errors. Below is a list of common issues and how to resolve them. ## Check Fails Only on One Version If the `R CMD check` workflow fails only on one or two R versions it can be helpful to reproduce the testing environment locally. To reproduce a particular R version environment open the `{admiral}` project in the corresponding R version, comment the line `source("renv/activate.R")` in the `.Rprofile` file, restart the R session and then run the following commands in the R console. ``` r Sys.setenv(R_REMOTES_NO_ERRORS_FROM_WARNINGS = "true") if (!dir.exists(".library")) { dir.create(".library") } base_recommended_pkgs <- row.names(installed.packages(priority = "high")) for (pkg in base_recommended_pkgs) { path <- file.path(.Library, pkg) cmd <- sprintf("cp -r %s .library", path) system(cmd) } assign(".lib.loc", ".library", envir = environment(.libPaths)) r_version <- getRversion() if (grepl("^4.1", r_version)) { options(repos = "https://packagemanager.posit.co/cran/2021-05-03/") } else if (grepl("^4.2", r_version)) { options(repos = "https://packagemanager.posit.co/cran/2022-01-03/") } else if (grepl("^4.3", r_version)) { options(repos = "https://packagemanager.posit.co/cran/2023-04-20/") } else { options(repos = "https://cran.rstudio.com") } if (!requireNamespace("remotes", quietly = TRUE)) { install.packages("remotes") } remotes::install_deps(dependencies = TRUE) remotes::install_github("pharmaverse/pharmaversesdtm", ref = "devel") remotes::install_github("pharmaverse/admiraldev", ref = "devel") rcmdcheck::rcmdcheck() ``` This will ensure that the exact package versions we use in the workflow are installed into the hidden folder `.library`. That way your existing R packages are *not* overwritten. ## Package Dependencies > checking package dependencies ... ERROR Namespace dependency not required: ‘pkg’ Add `pkg` to the `Imports` or `Suggests` field in the `DESCRIPTION` file. In general, dependencies should be listed in the `Imports` field. However, if a package is only used inside vignettes or unit tests it should be listed in `Suggests` because all `{admiral}` functions would work without these "soft" dependencies being installed. ## Global Variables ❯ checking R code for possible problems ... NOTE function_xyz: no visible binding for global variable ‘some_var’ Add `some_var` to the list of "global" variables in `R/globals.R`. ## Undocumented Function Parameter ❯ checking Rd \usage sections ... WARNING Undocumented arguments in documentation object 'function_xyz' ‘some_param’ Add an `@param some_param` section in the header of `function_xyz()` and run `devtools::document()` afterwards. ## Outdated Documentation ❯ checking for code/documentation mismatches ... WARNING Codoc mismatches from documentation object 'function_xyz': ... Argument names in code not in docs: new_param_name Argument names in docs not in code: old_param_name Mismatches in argument names: Position: 6 Code: new_param_name Docs: old_param_name The name of a parameter has been changed in the function code but not yet in the header. Change `@param old_param_name` to `@param new_param_name` and run `devtools::document()`. For further reading we recommend the [R-pkg manual r-cmd chapter](https://r-pkgs.org/r-cmd-check.html)