We want to make contributing to this project as easy and transparent as possible.
We welcome your pull requests. Please check the followings before you open a PR.
-
{COORDINATE} Before writing code, please contact us so that we can discuss the high-level ideas and implementation-details together.
-
{CODING STYLE} We follow Google's C++ Style Guide and PEP8 - Style Guide for Python Code . We have code linters (cpplint and pycodestyle) integrated in testing. Please make sure that you code do not generate warnings.
-
{DOCUMENTATION} Please document your classes, methods, and functions. For C++, we use Doxygen. For Python, we follow PEP 257 and PEP 8.
-
{COMMIT MESSAGE} We follow a
<type>(<scope>):<Subject>
-style for git commit-message convention. Please check our commits and read this doc for more information. -
{TEST COVERAGE} Please write enough test cases for your changes. To check the code-coverage, install kcov and run the following:
bazel test --config kcov //... # Open bazel-kcov/index.html
-
{PR SIZE} Please make sure that your PR is small enough to review. If your PR includes more than 750 lines of changes, please consider split it into multiple PRs.
git diff --stat
should give you a good summary of the size of your PR. -
{BUILD} Please make sure that your changes compile. On Ubuntu, build your code with both of gcc and clang:
CC=gcc-7 bazel build //... CC=clang-9 bazel build //... ...
-
{TEST} Please make sure that all the regression tests still pass with your changes. Run
bazel test //...
-
{REBASE} Please make sure 1) to rebase your commits on top of the latest
upstream/master
branch and 2) check that your changes still compile and pass all the tests. If you need more information about git-rebase, please read merging-vs-rebasing and git-merge-vs-rebase-whats-the-diff.git rebase upstream/master bazel test //...
-
{ASAN} Please make sure that clang sanitizers do not detect any problems. Run
bazel test //... --config=asan
-
{CODE REVIEW} We are using reviewable.io for code review. If you are new to it, please read nice tips of using it.
We use GitHub issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue. Please consider adding the following information to your issue:
- dReal version: Output from
dreal
. - OS version: Output from
sw_vers
(macOS),lsb_release -a
(Ubuntu). - Compiler: g++/llvm-clang/apple-clang + version. If you are running macOS, please make sure that
xcode-select -p
returns/Applications/Xcode.app/Contents/Developer
. - SMT2 file(s) or code snippet which demonstrates the problem.
- Bazel version: Output from
bazel version
. - Build commit: Output from
git log -n 1 --oneline
.
By contributing to dReal, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree.