This outlines how to propose a change to dccvalidator.
Small typos or grammatical errors in documentation may be edited directly using the GitHub web interface, so long as the changes are made in the source file.
- YES: you edit a roxygen comment in a
.R
file belowR/
. - NO: you edit an
.Rd
file belowman/
.
Before you make a substantial pull request, you should always file an issue and make sure someone from the team agrees that it’s a problem or desired feature. If you’ve found a bug, create an associated issue and illustrate the bug with a minimal reprex.
Once an issue exists, indicate that you plan on working on the update by commenting in the issue and, if able, assigning the issue to yourself.
All updates are done via pull request. We require that you create a Git branch for each pull request (PR). If you are unable to create a branch in the main repo, please see the section on forked repos below. There is a default template for all pull requests, subject to change.
- Fixes #: Put the number of the issue (e.g. Fixes #123).
- Changes proposed: List the changes made.
- Confirmation checklist: This checklist is both a reminder and a verification that related items were done. If the item is relevant to the changes being made, then be sure to do the task associated. When the pull request includes the item, check the box by adding an 'x' (e.g.
- [x]
) if marking upon pull request creation or by clicking on the checkbox for existing pull requests. If the item is irrelevant to the changes being made, leave the checkbox unchecked. If the maintainers believe the item is relevant to the change, they will request an update to the pull request.
There are a few guidelines to make note of. Please see the Local Development section for more information, as well.
- New code should follow the tidyverse style guide. You can use the styler package to apply these styles, but please don't restyle code that has nothing to do with your PR.
- We use roxygen2, with Markdown syntax, for documentation.
- We use testthat. Contributions with test cases included are easier to accept.
- If adding or updating features, be aware that the maintainers may suggest breaking up a complicated function into two or more smaller, testable functions. This helps with testing, debugging, and reusability.
If you do not have write access to the repo, please create a fork in your own account. Note that a pull request from a forked branch will fail the GitHub Actions tests due to not having the required secrets. Since the maintainers will need to spend extra time vetting the update, pull requests from forked repositories will take longer to process.
dccvalidator
uses pre-commit hooks to check for common issues, such as code
style (which should conform to tidyverse style),
code parsability, and up-to-date .Rd documentation. To use, you will need to
install pre-commit. If on a Mac, I recommend
using homebrew:
brew install pre-commit
Then, within this git repo, run:
pre-commit install
When you commit your changes, pre-commit will run the checks described above,
and the commit will fail if the checks do not pass. If you are experiencing
issues with the checks and want to commit your work and worry about them later,
you can run git commit --no-verify
to skip all checks. Or, you can skip
certain hooks by their ID (as shown in the file .pre-commit-config.yaml
), e.g.
SKIP=roxygenize git commit -m "foo"
.
While pre-commit hooks are recommended, it's possible to verify that the update follows our standards.
Install the devtools
package and run the check()
function. All checks should pass, including tests.
devtools::check()
As mentioned above, this package follows the tidyverse style guide. Sticking to a single style helps with readability and allows for focusing on the code itself. Your code can be updated to the proper style by installing the styler
package and running one of the styling functions on your code, such as style_dir()
.
styler::style_dir(file_type = "r")
Additionally, we also follow linting guidelines. While styler
will enforce some of these guidelines, it is also useful to install lintr
and run one of the linting functions, such as lint_file()
or lint_package()
. If there are linting errors, this will generate a list of problems to be fixed.
lintr::lint_package()
Note: Only commit style and lint changes related to your own code. If there are style and lint changes unrelated to your code, these can be ignored.
Please note that the dccvalidator project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.