VPP-237: Checkstyle script to check for new checkstyle breakage

indent is... cantankerous

It sometimes happens that if you run

indent A

resulting in A'

and then

indent A'

you get back A.  Since the check here is premised on being able
to run indent and not see any changed... we have to run it twice
to be sure.

Change-Id: I5b73e02f5996d8a01ec2e46741affbc6d62da6c9
Signed-off-by: Ed Warnicke <eaw@cisco.com>
This commit is contained in:
Ed Warnicke
2016-08-05 11:43:58 -07:00
parent 853e720fdd
commit be053b87cf
2 changed files with 76 additions and 0 deletions

3
.gitignore vendored
View File

@ -66,3 +66,6 @@ GTAGS
# Generated documentation # Generated documentation
/build-root/docs /build-root/docs
# indent backup files
*.BAK

View File

@ -0,0 +1,73 @@
#!/bin/bash
VPP_DIR=`dirname $0`/../../
EXIT_CODE=0
FIX="0"
CHECKSTYLED_FILES=""
UNCHECKSTYLED_FILES=""
# If the user provides --fix, then actually fix things
# Note: this is meant for use outside of the CI Jobs, by users cleaning things up
if [ $# -gt 0 ] && [ ${1} == '--fix' ]; then
FIX="1"
fi
# Check to make sure we have indent. Exit if we don't with an error message, but
# don't *fail*.
command -v indent > /dev/null
if [ $? != 0 ]; then
echo "Cound not find required commend \"indent\". Checkstyle aborted"
exit ${EXIT_CODE}
fi
indent --version
cd ${VPP_DIR}
git status
for i in `git ls-tree -r HEAD --name-only`;do
if [ -f ${i} ] && [ ${i} != "build-root/scripts/checkstyle.sh" ] && [ ${i} != "build-root/emacs-lisp/fix-coding-style.el" ]; then
grep -q "fd.io coding-style-patch-verification: ON" ${i}
if [ $? == 0 ]; then
CHECKSTYLED_FILES="${CHECKSTYLED_FILES} ${i}"
if [ ${FIX} == 0 ]; then
indent ${i} -o ${i}.out1 > /dev/null 2>&1
indent ${i}.out1 -o ${i}.out2 > /dev/null 2>&1
diff -q ${i} ${i}.out2
else
indent ${i}
indent ${i}
fi
if [ $? != 0 ]; then
EXIT_CODE=1
echo
echo "Checkstyle failed for ${i}."
echo "Run indent (twice!) as shown to fix the problem:"
echo "indent ${VPP_DIR}${i}"
echo "indent ${VPP_DIR}${i}"
fi
if [ -f ${i}.out1 ]; then
rm ${i}.out1
fi
if [ -f ${i}.out2 ]; then
rm ${i}.out2
fi
else
UNCHECKSTYLED_FILES="${UNCHECKSTYLED_FILES} ${i}"
fi
else
UNCHECKSTYLED_FILES="${UNCHECKSTYLED_FILES} ${i}"
fi
done
if [ ${EXIT_CODE} == 0 ]; then
echo "*******************************************************************"
echo "* VPP CHECKSTYLE SUCCESSFULLY COMPLETED"
echo "*******************************************************************"
else
echo "*******************************************************************"
echo "* VPP CHECKSTYLE FAILED"
echo "* CONSULT FAILURE LOG ABOVE"
echo "* NOTE: Running 'build-root/scripts/checkstyle.sh --fix' *MAY* fix the issue"
echo "*******************************************************************"
fi
exit ${EXIT_CODE}