Skip to content

Latest commit

 

History

History
108 lines (80 loc) · 2.68 KB

README.md

File metadata and controls

108 lines (80 loc) · 2.68 KB

check-commit-hook

A pre-commit hook implementation of the Linux kernel checkpatch.pl script.

Hooks

Checkpatch

Uses Linux kernel checkpatch.pl to check for coding style errors in C code, Makefiles, etc.

See the docs for the script itself here.

Custom configuration file

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.

Magic keys

The configuration file supports some magic keys that make it easier to configure the script.

__default__

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>
ERRORS_COMMON

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>
IGNORES_COMMON

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>

Usage

Pre-commit

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.