A pre-commit hook implementation of the Linux kernel checkpatch.pl script.
Uses Linux kernel checkpatch.pl to check for coding style errors in C code, Makefiles, etc.
See the docs for the script itself here.
The hook uses configuration file to specify which rules to enforce or ignore.
A default configuration file is provided in checkpatch_hook/data/checkpatch.yaml but it can be overriden
by a custom configuration file and passed to the script using the --config-file option.
The configuration file is a YAML file with the following structure:
DIR_CONFIGS:
<directory1>:
errors_ignored:
- <checkpatch option>
- <checkpatch option>
max_line_length: <number>
<directory2>:
errors_enabled:
- <checkpatch option>
- <checkpatch option>
max_line_length: <number>Note: Either errors_enabled or errors_ignored are enforced, not both.
The configuration file supports some magic keys that make it easier to configure the script.
The __default__ key can be used to apply the same configuration to all the files in the repository.
__default__:
errors_ignored:
- <checkpatch option>
- <checkpatch option>
- ...
max_line_length: <number>The ERRORS_ENABLED key can be used as a placeholder for all the errors enabled, and this needs to be part of errors_enabled list to be used.
ERRORS_ENABLED:
- <checkpatch option>
- <checkpatch option>
- ...
DIR_CONFIGS:
<directory>:
errors_enabled:
- ERRORS_ENABLED
- <checkpatch option>
- <checkpatch option>
- ...
max_line_length: <number>The IGNORES_COMMON key can be used as a placeholder for all the errors ignored for all the files, and this needs to be part of errors_ignored list to be used.
IGNORES_COMMON:
- <checkpatch option>
- <checkpatch option>
- ...
DIR_CONFIGS:
<directory>:
errors_ignored:
- IGNORES_COMMON
- <checkpatch option>
- <checkpatch option>
max_line_length: <number>To use the hooks in your local repository you need to install pre-commit and add the following to your .pre-commit-config.yaml file:
- repo: https://github.com/bluwireless/check-commit-hook
rev: xxxx
hooks:
- id: checkpatch
args: [--config-file, checkpatch_custom.yaml]The --fix-inplace argument can be added to let checkpatch try to fix errors where it can.
See the checkpatch docs.