All Projects → r-lib → Covr

r-lib / Covr

Licence: gpl-3.0
Test coverage reports for R

Programming Languages

r
7636 projects

Projects that are alternatives of or similar to Covr

travis-ci-tutorial-java
Just to learn how to use travis-ci in a java project!
Stars: ✭ 38 (-86.67%)
Mutual labels:  coverage, travis-ci, codecov
CPP Template
C++ project template : CMake, Test, Travis CI, Appveyor, CodeCoverage, Doxygen
Stars: ✭ 32 (-88.77%)
Mutual labels:  coverage, travis-ci, codecov
Codecov Python
Python report uploader for Codecov
Stars: ✭ 162 (-43.16%)
Mutual labels:  coverage, codecov, coverage-report
react-testing-mocha-chai-enzyme
A solid test setup for React components with Mocha, Chai, Sinon, Enzyme in a Webpack/Babel application.
Stars: ✭ 48 (-83.16%)
Mutual labels:  coverage, travis-ci, coverage-report
phpunit-travis-ci-coverage-example
phpUnit Testing on Travis-CI with Code Coverage on CodeCov
Stars: ✭ 30 (-89.47%)
Mutual labels:  coverage, travis-ci, codecov
Kcov
Code coverage tool for compiled programs, Python and Bash which uses debugging information to collect and report data without special compilation options
Stars: ✭ 515 (+80.7%)
Mutual labels:  travis-ci, coverage, codecov
enterprise
Code coverage done right.® On-premise enterprise version.
Stars: ✭ 63 (-77.89%)
Mutual labels:  coverage, coverage-report, codecov
example-objc
Codecov example for Xcode
Stars: ✭ 24 (-91.58%)
Mutual labels:  coverage, codecov
ts-node-starter
GitHub template to get started with Node.js & TypeScript. ⚡
Stars: ✭ 28 (-90.18%)
Mutual labels:  coverage, codecov
javadoc-coverage
A Doclet to generate JavaDoc coverage reports ☕️🧪📗
Stars: ✭ 23 (-91.93%)
Mutual labels:  coverage, coverage-report
jacoco-badge-generator
Coverage badges, and pull request coverage checks, from JaCoCo reports in GitHub Actions
Stars: ✭ 53 (-81.4%)
Mutual labels:  coverage, coverage-report
SpringBootRestAPI
A ready-to-use Template for Rest API using spring-boot-microservices, MongoDB as Database, Integrated with codecov and sonarqube, deployable to cloud.
Stars: ✭ 24 (-91.58%)
Mutual labels:  travis-ci, codecov
unitest
🌎 Seamless node and browser unit testing with code coverage
Stars: ✭ 28 (-90.18%)
Mutual labels:  coverage, coverage-report
gocoverutil
No description or website provided.
Stars: ✭ 25 (-91.23%)
Mutual labels:  coverage, codecov
continuous-integration-with-python
How to test your python code. How to automatically run your tests for your Python code. How to get reports of the tests coverage
Stars: ✭ 25 (-91.23%)
Mutual labels:  travis-ci, coverage-report
floss
Unit-testing for those hard to reach places
Stars: ✭ 26 (-90.88%)
Mutual labels:  coverage, travis-ci
cpp14-project-template
A simple, cross-platform, and continuously integrated C++14 project template
Stars: ✭ 64 (-77.54%)
Mutual labels:  travis-ci, codecov
frankencover.it
Code coverage for iOS and OSX.
Stars: ✭ 102 (-64.21%)
Mutual labels:  coverage, coverage-report
Blog Service
blog service @nestjs
Stars: ✭ 188 (-34.04%)
Mutual labels:  travis-ci, codecov
LocalCoverage.jl
Trivial functions for working with coverage for packages locally.
Stars: ✭ 55 (-80.7%)
Mutual labels:  coverage, coverage-report

covr

R build status Codecov test coverage CRAN version

Track test coverage for your R package and view reports locally or (optionally) upload the results to codecov or coveralls.

Installation

install.packages("covr")

# For devel version
devtools::install_github("r-lib/covr")

The easiest way to setup covr on Travis-CI is with usethis.

usethis::use_coverage()

Usage

For local development a coverage report can be used to inspect coverage for each line in your package. Note requires the DT package to be installed.

library(covr)

# If run with no arguments implicitly calls `package_coverage()`
report()

covr also defines an RStudio Addin, which runs report() on the active project. This can be used via the Addin menu or by binding the action to a shortcut, e.g. Ctrl-Shift-C.

Interactively

# If run with the working directory within the package source.
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)

Automated reports

Codecov

If you are already using Travis-CI add the following to your project's .travis.yml to track your coverage results over time with Codecov.

after_success:
  - Rscript -e 'covr::codecov()'

If you are using Appveyor CI then you can add the lines below to your project's appveyor.yml:

on_success:
  - Rscript -e "covr::codecov()"

You also need to install covr, either by adding it to the Suggests: field of your package's DESCRIPTION file or also to Remotes: r-lib/covr if you want to install the development version.

To use other CI services or if you want to upload a coverage report locally you can set environment variable CODECOV_TOKEN to the token generated on the settings page of https://codecov.io.

Coveralls

Alternatively you can upload your results to Coveralls using covr::coveralls().

after_success:
  - Rscript -e 'covr::coveralls()'

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.

Exclusions

covr supports a few of different ways of excluding some or all of a file.

.covrignore file

A .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 covr.covrignore.

The .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 inst/.covrignore instead.

Function Exclusions

The 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.

# exclude print functions
package_coverage(function_exclusions = "print\\.")

# exclude `.onLoad` function
package_coverage(function_exclusions = "\\.onLoad")

Line Exclusions

The 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"))

Exclusion Comments

In addition you can exclude lines from the coverage by putting special comments in your source code.

This can be done per line.

f1 <- function(x) {
  x + 1 # nocov
}

Or by specifying a range with a start and end.

f2 <- function(x) { # nocov start
  x + 2
} # nocov end

The patterns used can be specified by setting the global options covr.exclude_pattern, covr.exclude_start, covr.exclude_end.

NB: The same pattern applies to exclusions in the src folder, so skipped lines in, e.g., C code (where comments can start with //) should look like // # nocov.

FAQ

Will covr work with testthat, RUnit, etc...

Covr should be compatible with any testing package, it uses tools::testInstalledPackage() to run your packages tests.

Will covr work with alternative compilers such as ICC

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 4.2+.

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.

options(covr.gcov = "path/to/gcov")

How does covr work?

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 R using

vignette("how_it_works", package = "covr")

Why can't covr run during R CMD check

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).

Alternative Coverage Tools

Code of Conduct

Please note that the covr project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].