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