Skip to contents

We welcome contributions in the form of pull requests or issue reports.

Workflow

  1. Fork the repository and create feature branches from main.
  2. Restore development dependencies by running ./setup.sh and then execute R CMD check --no-manual.
  3. Build the docs with pkgdown::build_site() to verify examples render.
  4. Add unit tests for any new functionality and update relevant docs.

To run style checks, unit tests and coverage in one step, first run ./setup.sh to install the development packages (including quickcheck) and then execute:

Rscript scripts/run_checks.R

Run lintr::lint_package() to ensure the code matches the .lintr style configuration before submitting.

Code should follow the tidyverse style guide and respect CRAN policies (no unchecked warnings or notes from R CMD check).

All R source lives directly in R/, one file per diagnostic, named after the function it defines (for example R/performBPTest.R). There are no subdirectories.

Documentation, and a warning about roxygen2

man/ is mixed: roxygen2 generated 78 of the 130 pages and the other 52 were written by hand.

The hand-written pages are not at risk of being overwritten. roxygen2 skips any .Rd that lacks its Generated by roxygen2 header, printing Skipping <file>: it already exists and was not generated by roxygen2. That applies whether or not the function still carries roxygen comments – 47 of the 52 do, and all 52 survive a roxygenise() run byte-identical.

Running roxygen2::roxygenise() is still disruptive, for a different reason: it re-splits topics that the hand-maintained pages deliberately group together. On the current tree it writes 14 new files and deletes one (ht_logging.Rd, which documents the whole ht_* logging family under a single topic). Do not run it as part of an unrelated change.

When you change a function signature, update its .Rd file in the same commit. Nothing regenerates it for you. tests/testthat/test-documentation-consistency.R runs tools::codoc(), tools::checkDocFiles() and tools::undoc() so the local test suite catches the mismatch before CI does.

If R CMD check fails with command not found you need to install R and ensure the R executable is available. Consult your package manager or visit https://cran.r-project.org for installation instructions.

Continuous integration runs R CMD check automatically for every pull request via GitHub Actions, so make sure the checks pass locally before submitting.

Please open an issue to discuss substantial changes or cross-language API additions. Pull requests should include a concise description in the body and reference any related issues.