2019-07-23 03:25:17 -04:00
|
|
|
# Contributing to Profanity
|
|
|
|
|
2021-10-05 03:49:50 -04:00
|
|
|
`make doublecheck` will run the code formatter, spell checker and unit tests.
|
|
|
|
|
2019-07-23 03:25:17 -04:00
|
|
|
## Coding style
|
|
|
|
Follow the style already present ;-)
|
|
|
|
|
2020-07-07 03:42:00 -04:00
|
|
|
To make this easier for you we created a `.clang-format` file.
|
|
|
|
You'll need to have `clang-format` installed.
|
|
|
|
|
|
|
|
Then just run `make format` before you do any commit.
|
|
|
|
|
2020-07-07 03:51:47 -04:00
|
|
|
It might be a good idea to add a git pre-commit hook.
|
|
|
|
So git automatically runs clang-format before doing a commit.
|
|
|
|
|
|
|
|
You can add the following snippet to `.git/hooks/pre-commit`:
|
2020-07-07 04:11:31 -04:00
|
|
|
```shell
|
2020-07-07 03:51:47 -04:00
|
|
|
for f in $(git diff --cached --name-only)
|
|
|
|
do
|
2020-07-15 05:36:39 -04:00
|
|
|
if [[ "$f" =~ \.(c|h)$ ]]; then
|
|
|
|
clang-format -i $f
|
|
|
|
fi
|
2020-07-07 03:51:47 -04:00
|
|
|
done
|
|
|
|
```
|
|
|
|
|
2020-07-07 04:06:47 -04:00
|
|
|
If you feel embarrassed every time the CI fails you can add the following
|
|
|
|
snippet to `.git/hooks/pre-push`:
|
|
|
|
|
2020-07-07 04:11:31 -04:00
|
|
|
```shell
|
2020-07-07 04:06:47 -04:00
|
|
|
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
./ci-build.sh
|
|
|
|
```
|
|
|
|
|
|
|
|
This will run the same tests that the CI runs and refuse the push if it fails.
|
|
|
|
Note that it will run on the actual content of the repository directory and not
|
|
|
|
what may have been staged/committed.
|
|
|
|
|
|
|
|
If you're in a hurry you can add the `--no-verify` flag when issuing `git push`
|
|
|
|
and the `pre-push` hook will be skipped.
|
|
|
|
|
2019-07-23 03:25:17 -04:00
|
|
|
## Pull Requests
|
|
|
|
Before submitting a Pull Request please run valgrind and the clang static code analyzer.
|
|
|
|
|
|
|
|
### valgrind
|
|
|
|
We provide a suppressions file `prof.supp`. It is a combination of the suppressions for shipped with glib2, python and custom rules.
|
|
|
|
|
|
|
|
`G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind --tool=memcheck --track-origins=yes --leak-check=full --leak-resolution=high --num-callers=30 --show-leak-kinds=definite --log-file=profval --suppressions=prof.supp ./profanity`
|
|
|
|
|
|
|
|
### clang
|
|
|
|
|
|
|
|
Running the clang static code analyzer helps improving the quality too.
|
|
|
|
|
|
|
|
```
|
|
|
|
make clean
|
|
|
|
scan-build make
|
|
|
|
scan-view ...
|
|
|
|
```
|
2021-10-01 17:16:17 -04:00
|
|
|
|
|
|
|
### Finding typos
|
|
|
|
|
|
|
|
We include a `.codespellrc` configuration file for `codespell` in the root directory.
|
2021-10-13 15:32:44 -04:00
|
|
|
Before committing it might make sense to run `codespell` to see if you made any typos.
|
2021-10-05 03:49:50 -04:00
|
|
|
|
|
|
|
You can run the `make spell` command for this.
|