Skip to content

bluwireless/check-commit-hook

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published