blob: f714056a7fcb9aa17db68b405f6ff8217143c8a8 [file] [log] [blame] [edit]
#!/bin/sh
# This file will be used as ../../.git/hooks/pre-commit.
# However, it should be edited as checker/bin-devel/git.pre-commit.
# You can install it by running: (cd .. && ./gradlew installGitHooks)
# Fail if any command fails
set -e
# On commit we only need to check files that changed.
# Need to keep checked files in sync with getJavaFilesToFormat in build.gradle.
# Otherwise `./gradlew reformat` might not reformat a file that this
# hook complains about.
CHANGED_JAVA_FILES=$(git diff --staged --name-only --diff-filter=ACM | grep '\.java$' | grep -v '/jdk/' | grep -v 'stubparser/' | grep -v '/nullness-javac-errors/' | grep -v 'dataflow/manual/examples/' ) || true
# echo "CHANGED_JAVA_FILES=${CHANGED_JAVA_FILES}"
if [ -n "$CHANGED_JAVA_FILES" ]; then
./gradlew getCodeFormatScripts -q
## For debugging:
# echo "CHANGED_JAVA_FILES: ${CHANGED_JAVA_FILES}"
# shellcheck disable=SC2086
python3 checker/bin-devel/.run-google-java-format/check-google-java-format.py ${CHANGED_JAVA_FILES} || (echo "Problem in pre-commit. Try running: ./gradlew reformat" && /bin/false)
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$BRANCH" = "master" ]; then
git diff --staged > /tmp/diff.txt
./gradlew getPlumeScripts -q
(./gradlew requireJavadoc > /tmp/warnings-rjp.txt 2>&1) || true
checker/bin-devel/.plume-scripts/lint-diff.py --guess-strip /tmp/diff.txt /tmp/warnings-rjp.txt
(./gradlew javadocDoclintAll > /tmp/warnings-jda.txt 2>&1) || true
checker/bin-devel/.plume-scripts/lint-diff.py --guess-strip /tmp/diff.txt /tmp/warnings-jda.txt
fi
fi
# This is to handle non-.java files, since the above already handled .java files.
# May need to remove files that are allowed to have trailing whitespace or are
# not text files.
CHANGED_FILES=$(git diff --staged --name-only --diff-filter=ACM | grep -v '\.class$' | grep -v '\.gz$' | grep -v '\.jar$' | grep -v '\.pdf$' | grep -v '\.png$' | grep -v '\.xcf$') || true
if [ -n "$CHANGED_FILES" ]; then
## For debugging:
# echo "CHANGED_FILES: ${CHANGED_FILES}"
# shellcheck disable=SC2086
FILES_WITH_TRAILING_SPACES=$(grep -l -s '[[:blank:]]$' ${CHANGED_FILES} 2>&1) || true
if [ -n "$FILES_WITH_TRAILING_SPACES" ]; then
echo "Some files have trailing whitespace: ${FILES_WITH_TRAILING_SPACES}" && exit 1
fi
fi