check_lint.sh revision 5bd2174c1385ec10b172cc9a32bc33b1967d60b5
1#!/bin/bash 2 3SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" 4 5# Guess path to LLVM_CHECKOUT if not provided 6if [ "${LLVM_CHECKOUT}" == "" ]; then 7 LLVM_CHECKOUT="${SCRIPT_DIR}/../../../../../" 8 echo "LLVM Checkout: ${LLVM_CHECKOUT}" 9fi 10 11# Cpplint setup 12cd ${SCRIPT_DIR} 13if [ ! -d cpplint ]; then 14 svn co http://google-styleguide.googlecode.com/svn/trunk/cpplint cpplint 15else 16 (cd cpplint && svn up) 17fi 18CPPLINT=${SCRIPT_DIR}/cpplint/cpplint.py 19 20# Filters 21# TODO: remove some of these filters 22LLVM_LINT_FILTER=-,+whitespace 23COMMON_LINT_FILTER=-build/include,-build/header_guard,-legal/copyright,-whitespace/comments,-readability/casting,\ 24-build/namespaces 25ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int 26ASAN_TEST_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/sizeof,-runtime/int,-runtime/printf 27ASAN_LIT_TEST_LINT_FILTER=${ASAN_TEST_LINT_FILTER},-whitespace/line_length 28TSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER} 29TSAN_TEST_LINT_FILTER=${TSAN_RTL_LINT_FILTER},-runtime/threadsafe_fn,-runtime/int 30TSAN_LIT_TEST_LINT_FILTER=${TSAN_TEST_LINT_FILTER},-whitespace/line_length 31MSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER} 32LSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER} 33LSAN_LIT_TEST_LINT_FILTER=${LSAN_RTL_LINT_FILTER},-whitespace/line_length 34COMMON_RTL_INC_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/sizeof,-runtime/printf 35SANITIZER_INCLUDES_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int 36 37cd ${LLVM_CHECKOUT} 38 39EXITSTATUS=0 40 41run_lint() { 42 FILTER=$1 43 shift 44 ${CPPLINT} --filter=${FILTER} "$@" 45 if [ "$?" != "0" ]; then 46 EXITSTATUS=1 47 fi 48} 49 50run_lint ${LLVM_LINT_FILTER} --filter=${LLVM_LINT_FILTER} \ 51 lib/Transforms/Instrumentation/*Sanitizer.cpp \ 52 lib/Transforms/Utils/SpecialCaseList.cpp 53 54COMPILER_RT=projects/compiler-rt 55# Headers 56SANITIZER_INCLUDES=${COMPILER_RT}/include/sanitizer 57run_lint ${SANITIZER_INCLUDES_LINT_FILTER} ${SANITIZER_INCLUDES}/*.h 58 59# Sanitizer_common 60COMMON_RTL=${COMPILER_RT}/lib/sanitizer_common 61run_lint ${COMMON_RTL_INC_LINT_FILTER} ${COMMON_RTL}/*.{cc,h} \ 62 ${COMMON_RTL}/tests/*.cc 63 64# Interception 65INTERCEPTION=${COMPILER_RT}/lib/interception 66run_lint ${ASAN_RTL_LINT_FILTER} ${INTERCEPTION}/*.{cc,h} 67 68# ASan 69ASAN_RTL=${COMPILER_RT}/lib/asan 70run_lint ${ASAN_RTL_LINT_FILTER} ${ASAN_RTL}/*.{cc,h} 71run_lint ${ASAN_TEST_LINT_FILTER} ${ASAN_RTL}/tests/*.{cc,h} 72run_lint ${ASAN_LIT_TEST_LINT_FILTER} ${ASAN_RTL}/lit_tests/*/*.cc 73 74# TSan 75TSAN_RTL=${COMPILER_RT}/lib/tsan 76run_lint ${TSAN_RTL_LINT_FILTER} ${TSAN_RTL}/rtl/*.{cc,h} 77run_lint ${TSAN_TEST_LINT_FILTER} ${TSAN_RTL}/tests/rtl/*.{cc,h} \ 78 ${TSAN_RTL}/tests/unit/*.cc 79run_lint ${TSAN_LIT_TEST_LINT_FILTER} ${TSAN_RTL}/lit_tests/*.cc 80 81# MSan 82MSAN_RTL=${COMPILER_RT}/lib/msan 83run_lint ${MSAN_RTL_LINT_FILTER} ${MSAN_RTL}/*.{cc,h} 84 85# LSan 86LSAN_RTL=${COMPILER_RT}/lib/lsan 87run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/*.{cc,h} 88run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/tests/*.{cc,h} 89run_lint ${LSAN_LIT_TEST_LINT_FILTER} ${LSAN_RTL}/lit_tests/*/*.cc 90 91# Misc files 92FILES=${COMMON_RTL}/*.inc 93for FILE in $FILES; do 94 TMPFILE=$(mktemp -u ${FILE}.XXXXX).cc 95 echo "Checking $FILE" 96 cp -f $FILE $TMPFILE && \ 97 run_lint ${COMMON_RTL_INC_LINT_FILTER} $TMPFILE 98 rm $TMPFILE 99done 100 101exit $EXITSTATUS 102