# if `getwd()` is the package's directory. package_coverage() # or a package in another directory cov <- package_coverage("/dir/lintr") # view results as a data.frame as.data.frame(cov) # zero_coverage() shows only uncovered lines. # If run within RStudio, `zero_coverage()` will open a marker pane with the # uncovered lines. zero_coverage(cov)
Don’t forget to add
covr to the
Suggests: field of your package’s
DESCRIPTION file; possibly also to
To use a different CI service or call
codecov() locally you can set the environment variable
CODECOV_TOKEN to the token generated on codecov.io.
Codecov currently has support for the following CI systems (* denotes support without needing
You will also need to enable the repository on Codecov.
For CI systems not supported by coveralls you need to set the
COVERALLS_TOKEN environment variable. It is wise to use a Secure Variable so that it is not revealed publicly.
Also you will need to turn on coveralls for your project at https://coveralls.io/repos.
covr supports a few of different ways of excluding some or all of a file.
.covrignore file located in your package’s root directory can be used to exclude files or directories.
The lines in the
.covrignore file are interpreted as a list of file globs to ignore. It uses the globbing rules in
Sys.glob(). Any directories listed will ignore all the files in the directory.
Alternative locations for the file can be set by the environment variable
COVR_COVRIGNORE or the R option
.covrignore file should be added to your
.RBuildignore file unless you want to distribute it with your package. If so it can be added to
function_exclusions argument to
package_coverage() can be used to exclude functions by name. This argument takes a vector of regular expressions matching functions to exclude.
line_exclusions argument to
package_coverage() can be used to exclude some or all of a file. This argument takes a list of filenames or named ranges to exclude.
# exclude whole file of R/test.R package_coverage(line_exclusions = "R/test.R") # exclude lines 1 to 10 and 15 from R/test.R package_coverage(line_exclusions = list("R/test.R" = c(1:10, 15))) # exclude lines 1 to 10 from R/test.R, all of R/test2.R package_coverage(line_exclusions = list("R/test.R" = c(1, 10), "R/test2.R"))
In addition you can exclude lines from the coverage by putting special comments in your source code.
This can be done per line.
Or by specifying a range with a start and end.
The patterns used can be specified by setting the global options
Covr should be compatible with any testing package, it uses
tools::testInstalledPackage() to run your packages tests.
Covr now supports Intel’s
icc compiler, thanks to work contributed by Qin Wang at Oracle.
Covr is known to work with clang versions
3.5+ and gcc version
If the appropriate gcov version is not on your path you can set the appropriate location with the
covr.gcov options. If you set this path to “” it will turn off coverage of compiled code.
covr tracks test coverage by modifying a package’s code to add tracking calls to each call.
The vignette vignettes/how_it_works.Rmd contains a detailed explanation of the technique and the rationale behind it.
You can view the vignette from within
Because covr modifies the package code it is possible there are unknown edge cases where that modification affects the output. In addition when tracking coverage for compiled code covr compiles the package without optimization, which can modify behavior (usually due to package bugs which are masked with higher optimization levels).