blob: 9958fbd9520879e3a1ac2c785f2641f5314a11b8 [file] [log] [blame]
#!/usr/bin/env bash
#
# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# Check the coding style of the entire source tree against the Linux coding
# style using the checkpatch.pl script from the Linux kernel source tree.
TEST_CASE="Coding style of entire source tree"
echo "# Check coding style of the entire source tree"
LOG_FILE=$(mktemp -t coding-style-check.XXXX)
# Passing V=1 to 'make checkcodebase' will make it generate a per-file summary
CHECKPATCH=$CI_ROOT/script/static-checks/checkpatch.pl \
make checkcodebase V=1 &> "$LOG_FILE"
RES=$?
if [[ "$RES" == 0 ]]; then
# Ignore warnings, only mark the test as failed if there are errors.
# We'll get as many 'total:' lines as the number of files in the source tree.
# Search for lines that show a non-null number of errors.
grep --quiet 'total: [^0][0-9]* errors' "$LOG_FILE"
# grep returns 0 when it founds the pattern, which means there is an error
RES=$?
else
RES=0
fi
if [[ "$RES" == 0 ]]; then
EXIT_VALUE=1
else
EXIT_VALUE=0
fi
echo >> "$LOG_TEST_FILENAME"
echo "****** $TEST_CASE ******" >> "$LOG_TEST_FILENAME"
echo >> "$LOG_TEST_FILENAME"
if [[ "$EXIT_VALUE" == 0 ]]; then
echo "Result : SUCCESS" >> "$LOG_TEST_FILENAME"
else
echo "Result : FAILURE" >> "$LOG_TEST_FILENAME"
fi
# Always print the script output to show the warnings
echo >> "$LOG_TEST_FILENAME"
cat "$LOG_FILE" >> "$LOG_TEST_FILENAME"
echo >> "$LOG_TEST_FILENAME"
rm -f "$LOG_FILE"
exit "$EXIT_VALUE"