Checkpatch

Run checkpatch for ACK repository

To run checkpatch for the common kernel Git repository (assuming that the repository is checked out at common/):

$ tools/bazel run //common:checkpatch

Like any executable targets, flags to the script itself should be placed after --:

$ tools/bazel run //common:checkpatch [-- [flags]]

Run the following to get an updated list of flags accepted by the script:

$ tools/bazel run //common:checkpatch -- --help

Declare and run checkpatch for additional Git repositories

To support checkpatch for other Git repositories (e.g. the Git repositories for external modules), define the following target at <root of git repository>/BUILD.bazel (i.e. right next to .git):

# path/to/git/repository/BUILD.bazel

load("//build/kernel/kleaf:kernel.bzl", "checkpatch")

checkpatch(
    name = "checkpatch",
    checkpatch_pl = "//common:scripts/checkpatch.pl",
)

After the target is declared, you may run the following to run checkpatch on path/to/git/repository:

$ tools/bazel run //path/to/git/repository:checkpatch

Presubmit on ci.android.com

Presubmit checks on ci.android.com requires exactly one checkpatch() target to be declared for each Git repository that is eligible for checkpatch.

If you are migrating from build/kernel/static_analysis/checkpatch_presubmit.sh, a checkpatch target must be declared for each directory listed in EXT_MODULES.

Advanced usage

Run all declared checkpatch targets in the workspace

You may use Bazel query to find all declared checkpatch targets in the workspace, and run all of them. Example script:

(
    tools/bazel query '
        kind("^checkpatch rule$", //...:all) except //out/...
    ' -k 2>/dev/null || true
) | \
while read -r target ; do
    tools/bazel run "$target"
done

Run checkpatch on a different Git repository without declaring checkpatch()

NOTE: This is not recommended because it does not declare that the given Git repository is eligible for checkpatch. This should only be used for debugging to validate an arbitrary Git repository.

For example:

$ tools/bazel run //common:checkpatch -- --dir another/git/repository