d899bf44f7
make -j3 -f Makefile.cbm lint runs the full lint-tidy sweep, which currently surfaces ~5,100 pre-existing clang-tidy findings across 113 files. Since the pre-commit hook (scripts/hooks/pre-commit) runs that target unconditionally, it blocks every commit for every contributor who has clang-tidy on PATH, regardless of what the commit touches. Add lint-tidy-diff (scripts/lint-tidy-diff.sh), which runs the same clang-tidy binary/config but passes clang-tidy's own -line-filter so only lines the commit actually added or modified can produce a diagnostic. Pre-existing findings on untouched lines are not reported, whether they are in an untouched file or on an untouched line of a file the commit does touch. The hook now runs lint-ci (unchanged: cppcheck + clang-format + no-suppress) plus lint-tidy-diff instead of the full lint target; make lint / make lint-tidy / scripts/lint.sh are unchanged and remain the full-tree audit. Signed-off-by: Yyunozor <yyunozor@icloud.com>
21 lines
818 B
Bash
Executable File
21 lines
818 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Pre-commit hook: linters + security audit + build + tests.
|
|
#
|
|
# Activated automatically via scripts/setup.sh or manually:
|
|
# git config core.hooksPath scripts/hooks
|
|
|
|
echo "pre-commit: running all linters in parallel..."
|
|
# clang-tidy runs diff-scoped (lint-tidy-diff, see scripts/lint-tidy-diff.sh):
|
|
# the full lint-tidy sweep surfaces thousands of pre-existing findings that
|
|
# have nothing to do with this commit and would block every contributor who
|
|
# has clang-tidy on PATH. `make lint-tidy` remains available for a full audit.
|
|
make -j3 -f Makefile.cbm lint-ci lint-tidy-diff
|
|
|
|
echo "pre-commit: security audit (source-level)..."
|
|
scripts/security-audit.sh
|
|
|
|
echo "pre-commit: building and running tests..."
|
|
make -j$(sysctl -n hw.ncpu 2>/dev/null || nproc) -f Makefile.cbm test
|