107 lines
2.4 KiB
Bash
Executable file
107 lines
2.4 KiB
Bash
Executable file
#! /bin/sh
|
|
|
|
# Ensure consistent style by catching common improper constructs.
|
|
|
|
set -e
|
|
|
|
diag()
|
|
{
|
|
fail=:
|
|
echo "$file:" "$@"
|
|
echo ============================================================
|
|
}
|
|
|
|
rm -f failures
|
|
|
|
# Get some help from GNU grep.
|
|
GREP_OPTIONS='--color=auto -n'
|
|
GREP_COLOR='1;31'
|
|
export GREP_OPTIONS
|
|
export GREP_COLOR
|
|
|
|
tmp=incltest.tmp
|
|
|
|
for dir in "${INCDIR-..}" "${INCDIR-..}"/../iface; do
|
|
|
|
find "$dir" \( -name "${1-*}.hh" -o -name "${1-*}.cc" \) \
|
|
-a -type f -a -print |
|
|
while read file; do
|
|
if grep 'GNU Bison' "$file" >/dev/null ||
|
|
grep 'generated by flex' "$file" >/dev/null ; then
|
|
continue
|
|
fi
|
|
|
|
fail=false
|
|
|
|
sed 's,//.*,,' < $file > $tmp
|
|
|
|
grep '[ ]if(' $tmp &&
|
|
diag 'Missing space after "if"'
|
|
|
|
grep '[ ]if (.*).*{' $tmp &&
|
|
diag 'Opening { should be on its own line.'
|
|
|
|
grep '[ ]if (.*).*;' $tmp &&
|
|
diag 'if body should be on another line.'
|
|
|
|
grep '[ ]while(' $tmp &&
|
|
diag 'Missing space after "while"'
|
|
|
|
grep '[ ]while (.*).*{' $tmp &&
|
|
diag 'Opening { should be on its own line.'
|
|
|
|
grep '[ ]while (.*).*[^)];' $tmp &&
|
|
diag 'while body should be on another line.'
|
|
|
|
grep '[ ]for(' $tmp &&
|
|
diag 'Missing space after "for"'
|
|
|
|
grep '[ ]for (.*).*{' $tmp &&
|
|
diag 'Opening { should be on its own line.'
|
|
|
|
grep '[ ]for (.*;.*;.*).*;' $tmp &&
|
|
diag 'for body should be on another line.'
|
|
|
|
grep '[ ]switch(' $tmp &&
|
|
diag 'Missing space after "switch"'
|
|
|
|
grep '[ ]switch (.*).*{' $tmp &&
|
|
diag 'Opening { should be on its own line.'
|
|
|
|
grep '( ' $tmp &&
|
|
diag 'No space after opening (.'
|
|
|
|
grep ' )' $tmp &&
|
|
diag 'No space before closing ).'
|
|
|
|
grep '! ' $tmp &&
|
|
diag 'No space after unary operators (!).'
|
|
|
|
grep ',[(a-zA-Z+=_!]' $tmp &&
|
|
diag 'Space after coma.'
|
|
|
|
grep '[^ ]&&[^ ]' $tmp &&
|
|
diag 'Space arround binary operators.'
|
|
|
|
grep '[^ ]||[^ ]' $tmp &&
|
|
diag 'Space arround binary operators.'
|
|
|
|
grep '[ ]default:[^:].*;' $tmp &&
|
|
diag 'Label should be on their own line.'
|
|
|
|
grep '[ ]case.*:[^:].*;' $tmp &&
|
|
diag 'Label should be on their own line.'
|
|
|
|
grep '[ ];' $tmp &&
|
|
diag 'No space before semicolon.'
|
|
|
|
$fail && echo "$file" >>failures
|
|
done
|
|
done
|
|
|
|
if test -f failures; then
|
|
echo "The following files contain style errors:"
|
|
cat failures
|
|
rm failures
|
|
exit 1;
|
|
fi
|