Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 1 | #!/bin/sh |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 2 | |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 3 | SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" |
| 4 | |
| 5 | # Guess path to LLVM_CHECKOUT if not provided |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 6 | if [ "${LLVM_CHECKOUT}" = "" ]; then |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 7 | LLVM_CHECKOUT="${SCRIPT_DIR}/../../../../../" |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 8 | fi |
| 9 | |
Greg Fitzgerald | a310d98 | 2014-05-14 22:49:46 +0000 | [diff] [blame] | 10 | # python tools setup |
Alexey Samsonov | d875c39 | 2013-08-28 11:27:31 +0000 | [diff] [blame] | 11 | CPPLINT=${SCRIPT_DIR}/cpplint.py |
Greg Fitzgerald | a310d98 | 2014-05-14 22:49:46 +0000 | [diff] [blame] | 12 | LITLINT=${SCRIPT_DIR}/litlint.py |
Will Dietz | f967d1f | 2013-08-28 15:53:17 +0000 | [diff] [blame] | 13 | if [ "${PYTHON_EXECUTABLE}" != "" ]; then |
| 14 | CPPLINT="${PYTHON_EXECUTABLE} ${CPPLINT}" |
Greg Fitzgerald | a310d98 | 2014-05-14 22:49:46 +0000 | [diff] [blame] | 15 | LITLINT="${PYTHON_EXECUTABLE} ${LITLINT}" |
Will Dietz | f967d1f | 2013-08-28 15:53:17 +0000 | [diff] [blame] | 16 | fi |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 17 | |
| 18 | # Filters |
| 19 | # TODO: remove some of these filters |
Evgeniy Stepanov | 60a8e5b | 2013-02-08 12:13:43 +0000 | [diff] [blame] | 20 | COMMON_LINT_FILTER=-build/include,-build/header_guard,-legal/copyright,-whitespace/comments,-readability/casting,\ |
Kostya Serebryany | ad272b0 | 2017-06-02 21:32:04 +0000 | [diff] [blame] | 21 | -build/namespaces,-readability/braces |
Kostya Serebryany | 5b4267f | 2013-04-05 14:40:25 +0000 | [diff] [blame] | 22 | ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int |
Alexey Samsonov | 98aa08c | 2014-02-25 12:09:25 +0000 | [diff] [blame] | 23 | ASAN_TEST_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/sizeof,-runtime/int,-runtime/printf,-runtime/threadsafe_fn |
Alexey Samsonov | 506b97d | 2012-12-13 12:09:47 +0000 | [diff] [blame] | 24 | ASAN_LIT_TEST_LINT_FILTER=${ASAN_TEST_LINT_FILTER},-whitespace/line_length |
Evgeniy Stepanov | 60a8e5b | 2013-02-08 12:13:43 +0000 | [diff] [blame] | 25 | TSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER} |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 26 | TSAN_TEST_LINT_FILTER=${TSAN_RTL_LINT_FILTER},-runtime/threadsafe_fn,-runtime/int |
Alexey Samsonov | 8474843 | 2012-12-28 10:06:26 +0000 | [diff] [blame] | 27 | TSAN_LIT_TEST_LINT_FILTER=${TSAN_TEST_LINT_FILTER},-whitespace/line_length |
Evgeniy Stepanov | 60a8e5b | 2013-02-08 12:13:43 +0000 | [diff] [blame] | 28 | MSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER} |
Sergey Matveev | 48c1d1a | 2013-05-20 11:09:27 +0000 | [diff] [blame] | 29 | LSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER} |
Sergey Matveev | 39e8a6d | 2013-05-27 11:41:46 +0000 | [diff] [blame] | 30 | LSAN_LIT_TEST_LINT_FILTER=${LSAN_RTL_LINT_FILTER},-whitespace/line_length |
Lorenzo Martignoni | 60ebffc | 2014-10-08 10:01:42 +0000 | [diff] [blame] | 31 | DFSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/printf,-runtime/references,-readability/function |
Kostya Kortchinsky | 6edadae | 2017-11-08 16:42:29 +0000 | [diff] [blame] | 32 | SCUDO_RTL_LINT_FILTER=${COMMON_LINT_FILTER} |
Sergey Matveev | 6b33975 | 2014-01-31 14:02:21 +0000 | [diff] [blame] | 33 | COMMON_RTL_INC_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int,-runtime/sizeof,-runtime/printf,-readability/fn_size |
Evgeniy Stepanov | 1a2262e | 2013-04-22 13:28:26 +0000 | [diff] [blame] | 34 | SANITIZER_INCLUDES_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int |
Evgeniy Stepanov | e000935 | 2015-01-16 10:09:56 +0000 | [diff] [blame] | 35 | |
| 36 | MKTEMP_DIR=$(mktemp -qd /tmp/check_lint.XXXXXXXXXX) |
| 37 | MKTEMP="mktemp -q ${MKTEMP_DIR}/tmp.XXXXXXXXXX" |
Evgeniy Stepanov | 29235e3 | 2015-01-16 10:20:49 +0000 | [diff] [blame] | 38 | cleanup() { |
Evgeniy Stepanov | e000935 | 2015-01-16 10:09:56 +0000 | [diff] [blame] | 39 | rm -rf $MKTEMP_DIR |
| 40 | } |
| 41 | trap cleanup EXIT |
| 42 | |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 43 | cd ${LLVM_CHECKOUT} |
| 44 | |
Alexey Samsonov | 903c325 | 2013-08-23 07:43:56 +0000 | [diff] [blame] | 45 | EXITSTATUS=0 |
Alexander Potapenko | d1bae72 | 2013-09-20 11:29:44 +0000 | [diff] [blame] | 46 | ERROR_LOG=$(${MKTEMP}) |
Timur Iskhodzhanov | dd052ce | 2013-08-13 13:44:02 +0000 | [diff] [blame] | 47 | |
Alexey Samsonov | 903c325 | 2013-08-23 07:43:56 +0000 | [diff] [blame] | 48 | run_lint() { |
| 49 | FILTER=$1 |
| 50 | shift |
Alexander Potapenko | d1bae72 | 2013-09-20 11:29:44 +0000 | [diff] [blame] | 51 | TASK_LOG=$(${MKTEMP}) |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 52 | ${CPPLINT} --filter=${FILTER} "$@" 2>$TASK_LOG |
Alexey Samsonov | 903c325 | 2013-08-23 07:43:56 +0000 | [diff] [blame] | 53 | if [ "$?" != "0" ]; then |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 54 | cat $TASK_LOG | grep -v "Done processing" | grep -v "Total errors found" \ |
| 55 | | grep -v "Skipping input" >> $ERROR_LOG |
| 56 | fi |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 57 | if [ "${SILENT}" != "1" ]; then |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 58 | cat $TASK_LOG |
Alexey Samsonov | 903c325 | 2013-08-23 07:43:56 +0000 | [diff] [blame] | 59 | fi |
Greg Fitzgerald | ceae1fb | 2014-05-14 23:31:20 +0000 | [diff] [blame] | 60 | ${LITLINT} "$@" 2>>$ERROR_LOG |
Alexey Samsonov | 903c325 | 2013-08-23 07:43:56 +0000 | [diff] [blame] | 61 | } |
| 62 | |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 63 | if [ "${COMPILER_RT}" = "" ]; then |
Greg Fitzgerald | 8288afb | 2014-03-21 00:45:21 +0000 | [diff] [blame] | 64 | COMPILER_RT=projects/compiler-rt |
| 65 | fi |
Alexey Samsonov | 98aa08c | 2014-02-25 12:09:25 +0000 | [diff] [blame] | 66 | LIT_TESTS=${COMPILER_RT}/test |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 67 | # Headers |
| 68 | SANITIZER_INCLUDES=${COMPILER_RT}/include/sanitizer |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 69 | run_lint ${SANITIZER_INCLUDES_LINT_FILTER} ${SANITIZER_INCLUDES}/*.h & |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 70 | |
| 71 | # Sanitizer_common |
| 72 | COMMON_RTL=${COMPILER_RT}/lib/sanitizer_common |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 73 | run_lint ${COMMON_RTL_INC_LINT_FILTER} ${COMMON_RTL}/*.cc \ |
| 74 | ${COMMON_RTL}/*.h \ |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 75 | ${COMMON_RTL}/tests/*.cc & |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 76 | |
Evgeniy Stepanov | 83f05bf | 2012-12-11 12:52:38 +0000 | [diff] [blame] | 77 | # Interception |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 78 | INTERCEPTION=${COMPILER_RT}/lib/interception |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 79 | run_lint ${ASAN_RTL_LINT_FILTER} ${INTERCEPTION}/*.cc \ |
| 80 | ${INTERCEPTION}/*.h & |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 81 | |
| 82 | # ASan |
| 83 | ASAN_RTL=${COMPILER_RT}/lib/asan |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 84 | run_lint ${ASAN_RTL_LINT_FILTER} ${ASAN_RTL}/*.cc \ |
| 85 | ${ASAN_RTL}/*.h & |
| 86 | run_lint ${ASAN_TEST_LINT_FILTER} ${ASAN_RTL}/tests/*.cc \ |
| 87 | ${ASAN_RTL}/tests/*.h & |
Alexey Samsonov | 98aa08c | 2014-02-25 12:09:25 +0000 | [diff] [blame] | 88 | run_lint ${ASAN_LIT_TEST_LINT_FILTER} ${LIT_TESTS}/asan/*/*.cc & |
Alexey Samsonov | 79b3628 | 2012-08-31 08:36:36 +0000 | [diff] [blame] | 89 | |
| 90 | # TSan |
| 91 | TSAN_RTL=${COMPILER_RT}/lib/tsan |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 92 | run_lint ${TSAN_RTL_LINT_FILTER} ${TSAN_RTL}/rtl/*.cc \ |
| 93 | ${TSAN_RTL}/rtl/*.h & |
| 94 | run_lint ${TSAN_TEST_LINT_FILTER} ${TSAN_RTL}/tests/rtl/*.cc \ |
| 95 | ${TSAN_RTL}/tests/rtl/*.h \ |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 96 | ${TSAN_RTL}/tests/unit/*.cc & |
Alexey Samsonov | 98aa08c | 2014-02-25 12:09:25 +0000 | [diff] [blame] | 97 | run_lint ${TSAN_LIT_TEST_LINT_FILTER} ${LIT_TESTS}/tsan/*.cc & |
Evgeniy Stepanov | c8cde8d | 2013-01-18 15:53:43 +0000 | [diff] [blame] | 98 | |
Evgeniy Stepanov | 83f05bf | 2012-12-11 12:52:38 +0000 | [diff] [blame] | 99 | # MSan |
| 100 | MSAN_RTL=${COMPILER_RT}/lib/msan |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 101 | run_lint ${MSAN_RTL_LINT_FILTER} ${MSAN_RTL}/*.cc \ |
| 102 | ${MSAN_RTL}/*.h & |
Evgeniy Stepanov | c8cde8d | 2013-01-18 15:53:43 +0000 | [diff] [blame] | 103 | |
Sergey Matveev | 48c1d1a | 2013-05-20 11:09:27 +0000 | [diff] [blame] | 104 | # LSan |
| 105 | LSAN_RTL=${COMPILER_RT}/lib/lsan |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 106 | run_lint ${LSAN_RTL_LINT_FILTER} ${LSAN_RTL}/*.cc \ |
| 107 | ${LSAN_RTL}/*.h & |
Alexey Samsonov | 98aa08c | 2014-02-25 12:09:25 +0000 | [diff] [blame] | 108 | run_lint ${LSAN_LIT_TEST_LINT_FILTER} ${LIT_TESTS}/lsan/*/*.cc & |
Evgeniy Stepanov | 8a3666f | 2013-01-18 16:24:50 +0000 | [diff] [blame] | 109 | |
Lorenzo Martignoni | 895454e | 2013-11-26 11:45:58 +0000 | [diff] [blame] | 110 | # DFSan |
| 111 | DFSAN_RTL=${COMPILER_RT}/lib/dfsan |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 112 | run_lint ${DFSAN_RTL_LINT_FILTER} ${DFSAN_RTL}/*.cc \ |
| 113 | ${DFSAN_RTL}/*.h & |
Lorenzo Martignoni | 895454e | 2013-11-26 11:45:58 +0000 | [diff] [blame] | 114 | ${DFSAN_RTL}/scripts/check_custom_wrappers.sh >> $ERROR_LOG |
| 115 | |
Kostya Kortchinsky | 6edadae | 2017-11-08 16:42:29 +0000 | [diff] [blame] | 116 | # Scudo |
| 117 | SCUDO_RTL=${COMPILER_RT}/lib/scudo |
| 118 | run_lint ${SCUDO_RTL_LINT_FILTER} ${SCUDO_RTL}/*.cpp \ |
| 119 | ${SCUDO_RTL}/*.h & |
| 120 | |
Evgeniy Stepanov | c8cde8d | 2013-01-18 15:53:43 +0000 | [diff] [blame] | 121 | # Misc files |
| 122 | FILES=${COMMON_RTL}/*.inc |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 123 | TMPFILES="" |
Evgeniy Stepanov | c8cde8d | 2013-01-18 15:53:43 +0000 | [diff] [blame] | 124 | for FILE in $FILES; do |
Alexey Samsonov | fa103da | 2013-10-16 13:38:23 +0000 | [diff] [blame] | 125 | TMPFILE="$(${MKTEMP}).$(basename ${FILE}).cc" |
| 126 | cp -f $FILE $TMPFILE |
| 127 | run_lint ${COMMON_RTL_INC_LINT_FILTER} $TMPFILE & |
| 128 | TMPFILES="$TMPFILES $TMPFILE" |
Evgeniy Stepanov | c8cde8d | 2013-01-18 15:53:43 +0000 | [diff] [blame] | 129 | done |
Alexey Samsonov | 903c325 | 2013-08-23 07:43:56 +0000 | [diff] [blame] | 130 | |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 131 | wait |
| 132 | |
| 133 | for temp in $TMPFILES; do |
| 134 | rm -f $temp |
| 135 | done |
| 136 | |
Ed Maste | 89b80fb | 2014-10-07 20:23:57 +0000 | [diff] [blame] | 137 | if [ -s $ERROR_LOG ]; then |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 138 | cat $ERROR_LOG |
| 139 | exit 1 |
Alexey Samsonov | d875c39 | 2013-08-28 11:27:31 +0000 | [diff] [blame] | 140 | fi |
| 141 | |
Alexey Samsonov | 25dc018 | 2013-08-29 11:35:01 +0000 | [diff] [blame] | 142 | exit 0 |