.github/workflows: Use checkpatch scripts

Inroduce several checkpatch scripts to use in workflows.
This commit is contained in:
Gleb Chesnokov
2024-11-07 12:49:54 +03:00
parent fca4d58822
commit 31eca7eced
6 changed files with 75 additions and 55 deletions

View File

@@ -24,31 +24,4 @@ jobs:
- name: Run checkpatch.pl
run: |
ignore=(
MISSING_SIGN_OFF
EMAIL_SUBJECT
UNKNOWN_COMMIT_ID
NO_AUTHOR_SIGN_OFF
COMMIT_LOG_USE_LINK
BAD_REPORTED_BY_LINK
FILE_PATH_CHANGES
SPDX_LICENSE_TAG
LINUX_VERSION_CODE
CONSTANT_COMPARISON
NEW_TYPEDEFS
SPACING
)
ignore_str=${ignore[*]}
base_commit=${{github.event.pull_request.base.sha}}
commits=$(git log --pretty=format:"%h" $base_commit..HEAD)
err=0
for commit in $commits; do
echo "Running checkpatch.pl for commit $commit"
echo "========================================"
git format-patch -1 --stdout $commit | ./checkpatch.pl --no-tree --show-types --strict --ignore="${ignore_str// /,}" - || err=1
echo
done
exit $err
CHECKPATCH_PATH=. ./scripts/checkpatch_commits ${{github.event.pull_request.base.sha}}

View File

@@ -29,20 +29,4 @@ jobs:
- name: Run checkpatch.pl
run: |
ignore=(
MISSING_SIGN_OFF
EMAIL_SUBJECT
UNKNOWN_COMMIT_ID
NO_AUTHOR_SIGN_OFF
COMMIT_LOG_USE_LINK
BAD_REPORTED_BY_LINK
FILE_PATH_CHANGES
SPDX_LICENSE_TAG
LINUX_VERSION_CODE
CONSTANT_COMPARISON
NEW_TYPEDEFS
SPACING
)
ignore_str=${ignore[*]}
git format-patch -1 --stdout | ./checkpatch.pl --no-tree --show-types --strict --ignore="${ignore_str// /,}" -
git format-patch -1 --stdout | CHECKPATCH_PATH=. ./scripts/checkpatch

View File

@@ -1,17 +1,22 @@
#!/usr/bin/env bash
set -e
scriptpath=${CHECKPATCH_PATH:-/lib/modules/$(uname -r)/build/scripts}
ignore=(
CONSTANT_COMPARISON
LINUX_VERSION_CODE
LONG_LINE
LONG_LINE_COMMENT
LONG_LINE_STRING
RETURN_VOID
MISSING_SIGN_OFF
EMAIL_SUBJECT
UNKNOWN_COMMIT_ID
NO_AUTHOR_SIGN_OFF
COMMIT_LOG_USE_LINK
BAD_REPORTED_BY_LINK
FILE_PATH_CHANGES
SPDX_LICENSE_TAG
SYMBOLIC_PERMS
LINUX_VERSION_CODE
CONSTANT_COMPARISON
NEW_TYPEDEFS
)
ignore_str=${ignore[*]}
src_files=$(list-source-files | grep -vE '^debian/|^fcst/linux-patches|patch$|pdf$|png$|^iscsi-scst/usr|^qla|^scripts/|^scstadmin/|^usr/|^www/')
../linux-kernel/scripts/checkpatch.pl -f --show-types --strict --ignore="${ignore_str// /,}" $src_files | sed 's/^#[0-9]*: FILE: \(.*\):/\1:1:/'
${scriptpath}/checkpatch.pl --no-tree --show-types --strict --ignore="${ignore_str// /,}" $@

21
scripts/checkpatch_commits Executable file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -e
rootdir=$(readlink -f $(dirname $0)/..)
scriptsdir=${rootdir}/scripts
base_commit=${1:-master}
commits=$(cd ${rootdir} && git log --pretty=format:"%h" ${base_commit}..HEAD)
err=0
for commit in $commits; do
echo "Running checkpatch for commit $commit"
echo -e "========================================\n"
(cd ${rootdir} &&
git format-patch -1 --stdout $commit | ${scriptsdir}/checkpatch -) || err=1
echo -e "\n"
done
exit $err

13
scripts/checkpatch_diff Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -e
rootdir=$(readlink -f $(dirname $0)/..)
scriptsdir=${rootdir}/scripts
base_commit=${1:-master}
err=0
(cd ${rootdir} && git diff ${base_commit} | ${scriptsdir}/checkpatch -) || err=1
exit $err

24
scripts/checkpatch_scan Executable file
View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
set -e
rootdir=$(readlink -f $(dirname $0)/..)
scriptsdir=${rootdir}/scripts
outputfile=checkpatch.out
src_files=$(${scriptsdir}/list-source-files ${rootdir} | \
grep -vE '^debian/|^fcst/linux-patches|patch$|pdf$|png$|^iscsi-scst/usr|^qla|^scripts/|^scstadmin/|^usr/|^www/' | \
while read -r filename; do echo "${rootdir}/$filename"; done)
${scriptsdir}/checkpatch -f $src_files 1> ${outputfile} || true
errors=$(grep -c '^ERROR' "${outputfile}")
warnings=$(grep -c '^WARNING' "${outputfile}")
checks=$(grep -c '^CHECK' "${outputfile}")
echo "${errors} errors / ${warnings} warnings / ${checks} checks."
grep -E '^WARNING|^ERROR|^CHECK' "${outputfile}" |
sort |
sed 's/^CHECK:CAMELCASE: Avoid CamelCase:.*/CHECK:CAMELCASE Avoid CamelCase/' |
uniq -c