Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

r-lib/rcmdcheck

Open more actions menu

Repository files navigation

Run R CMD check from R and Capture Results

rcmdcheck

Run R CMD check from R and Capture Results

lifecycle CRAN RStudio mirror downloads R-CMD-check Codecov test coverage

Run R CMD check from R programmatically and capture the results of the individual checks.

Installation

Install the released version from CRAN

install.packages("rcmdcheck")

Or install the development version from GitHub:

# install.packages("pak")
pak::pak("r-lib/rcmdcheck")

Usage

library(rcmdcheck)
rcmdcheck("path/to/R/package")

Call rcmdcheck() on a source R package .tar.gz file, or on a folder containing your R package. Supply quiet = FALSE if you want to omit the output. The result of the check is returned, in a list with elements errors, warnings, and notes. Each element is a character vector, and one element of the character vectors is a single failure.

animated screenshot of a terminal window demonstrating example usage of the rcmdcheck function.

Programmatic usage

rcmdcheck() returns an rcmdcheck object, which you can query and manipulate.

library(rcmdcheck)
chk <- rcmdcheck("tests/testthat/bad1", quiet = TRUE)
chk
#> ── R CMD check results ─────────────────────────────────── badpackage 1.0.0 ────
#> Duration: 12.5s
#> 
#> ❯ checking DESCRIPTION meta-information ... WARNING
#>   Non-standard license specification:
#>     Public domain
#>   Standardizable: FALSE
#> 
#> 0 errors ✔ | 1 warning ✖ | 0 notes ✔

check_details() turns the check results into a simple lists with the following information currently:

names(check_details(chk))
#>  [1] "package"      "version"      "notes"        "warnings"     "errors"      
#>  [6] "platform"     "checkdir"     "install_out"  "description"  "session_info"
#> [11] "cran"         "bioc"
  • package: Package name.
  • version: Package version number.
  • notes: Character vector of check NOTEs.
  • warnings: Character vector of check WARNINGs.
  • errors: Character vector of check ERRORs.
  • platform: Platform, e.g. x86_64-apple-darwin15.6.0.
  • checkdir: Check directory.
  • install_out: Output of the package installation.
  • description: The text of the DESCRIPTION file.
  • session_info: A sessioninfo::session_info object, session information from within the check process.
  • cran: Flag, whether this is a CRAN package. (Based on the Repository field in DESCRIPTION, which is typically only set for published CRAN packages.)
  • bioc: Flag, whether this is a Bioconductor package, based on the presence of the biocViews field in DESCRIPTION.

Note that if the check results were parsed from a file, some of these fields might be missing (NULL), as we don’t have access to the original DESCRIPTION, the installation output, etc.

Parsing check output

parse_check() parses check output from a file, parse_check_url() parses check output from a URL.

CRAN checks

rcmdcheck has a functions to access CRAN’s package check results.

cran_check_flavours() downloads the names of the CRAN platforms:

cran_check_flavours()
#>  [1] "r-devel-linux-x86_64-debian-clang" "r-devel-linux-x86_64-debian-gcc"  
#>  [3] "r-devel-linux-x86_64-fedora-clang" "r-devel-linux-x86_64-fedora-gcc"  
#>  [5] "r-devel-windows-x86_64"            "r-patched-linux-x86_64"           
#>  [7] "r-release-linux-x86_64"            "r-release-macos-arm64"            
#>  [9] "r-release-macos-x86_64"            "r-release-windows-x86_64"         
#> [11] "r-oldrel-macos-arm64"              "r-oldrel-macos-x86_64"            
#> [13] "r-oldrel-windows-x86_64"

cran_check_results() loads and parses all check results for a package.

cran_check_results("igraph")
#> $`r-devel-linux-x86_64-debian-clang`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-devel-linux-x86_64-debian-gcc`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-devel-linux-x86_64-fedora-clang`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-devel-linux-x86_64-fedora-gcc`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-devel-windows-x86_64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File 'igraph/libs/x64/igraph.dll':
#>     Found non-API call to R: 'Rf_allocSExp'
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See 'Writing portable packages' in the 'Writing R Extensions' manual,
#>   and section 'Moving into C API compliance' for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-patched-linux-x86_64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-release-linux-x86_64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-release-macos-arm64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-release-macos-x86_64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File ‘igraph/libs/igraph.so’:
#>     Found non-API call to R: ‘Rf_allocSExp’
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual,
#>   and section ‘Moving into C API compliance’ for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-release-windows-x86_64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking compiled code ... NOTE
#>   File 'igraph/libs/x64/igraph.dll':
#>     Found non-API call to R: 'Rf_allocSExp'
#>   
#>   Compiled code should not call non-API entry points in R.
#>   
#>   See 'Writing portable packages' in the 'Writing R Extensions' manual,
#>   and section 'Moving into C API compliance' for issues with the use of
#>   non-API entry points.
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-oldrel-macos-arm64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking installed package size ... NOTE
#>     installed size is 23.8Mb
#>     sub-directories of 1Mb or more:
#>       R      2.1Mb
#>       doc    1.2Mb
#>       help   2.9Mb
#>       libs  17.1Mb
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-oldrel-macos-x86_64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking installed package size ... NOTE
#>     installed size is 23.6Mb
#>     sub-directories of 1Mb or more:
#>       R      1.3Mb
#>       doc    1.2Mb
#>       help   2.0Mb
#>       libs  18.7Mb
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> $`r-oldrel-windows-x86_64`
#> ── R CMD check results ─────────────────────────────────────── igraph 2.1.4 ────
#> Duration: 0ms
#> 
#> ❯ checking installed package size ... NOTE
#>     installed size is 10.7Mb
#>     sub-directories of 1Mb or more:
#>       R      1.3Mb
#>       doc    1.2Mb
#>       help   2.1Mb
#>       libs   5.7Mb
#> 
#> 0 errors ✔ | 0 warnings ✔ | 1 note ✖
#> 
#> attr(,"package")
#> [1] "igraph"
#> attr(,"class")
#> [1] "rmcdcheck_cran_results"

Comparing checks

compare_checks() can compare two or more rcmdcheck objects. compare_to_cran() compares an rcmdcheck object to the CRAN checks of the same package:

chk <- rcmdcheck(quiet = TRUE)
compare_to_cran(chk)
#> ── R CMD check comparison ──────────────────── rcmdcheck 1.4.0 / 1.4.0.9000 ────
#> Status: OK

Background processes

rcmdcheck_process is a processx::process class, that can run R CMD check in the background. You can also use this to run multiple checks concurrently. processx::process methods can be used to poll or manipulate the check processes.

chkpx <- rcmdcheck_process$new()
chkpx
#> PROCESS 'R', running, pid 74156.
chkpx$wait()
chkpx$parse_results()
#> ── R CMD check results ─────────────────────────────── rcmdcheck 1.4.0.9000 ────
#> Duration: 19.5s
#> 
#> 0 errors ✔ | 0 warnings ✔ | 0 notes ✔

About

Run R CMD check from R and collect the results

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 19

Morty Proxy This is a proxified and sanitized view of the page, visit original site.