You can configure
lintr to run as part of continuous integration (either for a package or a general project containing R files) in order to automatically check that commits and pull requests do not deteriorate code style.
If your package is on GitHub, the easiest way to do this is with GitHub Actions. The workflow configuration files use YAML syntax. The
usethis package has some great functionality that can help you with workflow files. The most straightforward way to add a
lintr workflow to your package is to use the r-lib/actions’s
lint example. To do this with
usethis, you need to call
This will create a workflow file called
lint.yaml and place it in the correct location, namely in the
.github/workflows directory of your repository. This file configures all the steps required to run
lintr::lint_package() on your package.
lintr-bot will then add comments to the commit or pull request with the lints found and they will also be printed as annotations along side the status check on GitHub. If you want to disable the commenting you can set the environment variable
LINTR_COMMENT_BOT=false. Additionally, if you want the builds to produce an error instead of just a warning, you can set the environment variable
LINTR_ERROR_ON_LINT=true. Note that this will kill the R process in case of a lint.
If your project is in a subdirectory and you would like to use GitHub Actions annotations, you can set
options(lintr.github_annotation_project_dir = "path/to/project") which will make sure that the annotations point to the correct paths.
If you want to run
lintr on Travis-CI, you will need to have Travis install the package first. This can be done by adding the following line to your
r_github_packages: - r-lib/lintr
We recommend running
lintr::lint_package() as an after_success step in your build process]
Just like with GitHub Actions, lintr-bot will then add comments to the commit or pull request with the lints found and they will also be printed on Travis-CI. The environment variables
LINTR_ERROR_ON_LINT mentioned for GitHub actions also work with Travis CI builds.
after_success: - R CMD INSTALL $PKG_TARBALL - Rscript -e 'lintr::lint_package()'
Live example of a package using this setup:
hibpwned, lintr-bot commenting on a PR.
You are not limited you using
lintr for packages – you can use it in combination with continuous integration for any other project.
If your project is on GitHub, you could take advantage of GitHub Actions and the
usethis functionality. r-lib/actions includes a
lint-project example, which you can use by calling:
lintr powers R lints for Super-Linter and MegaLinter, which provide a unified linting experience across many languages. Specifically, they execute
lintr::lint() on the R and R Markdown files included in a given project.