Chris@2123: #!/bin/bash Chris@2123: Chris@2123: usage() { Chris@2123: echo Chris@2123: echo " $0: run clang-tidy on a build with supplied arguments" 1>&2 Chris@2123: echo Chris@2123: echo " Run this from the root of the source tree, on a Linux system." 1>&2 Chris@2123: echo " Assumes that \"./configure && make clean && make\" will produce a successful" 1>&2 Chris@2123: echo " build using g++." 1>&2 Chris@2123: echo " All arguments are passed to clang-tidy." 1>&2 Chris@2123: echo Chris@2123: exit 2 Chris@2123: } Chris@2123: Chris@2123: if [ t"$1" = "t" ]; then Chris@2123: usage Chris@2123: fi Chris@2123: Chris@2123: ctargs="$@" Chris@2123: Chris@2123: echo "clang-tidy args: $ctargs" Chris@2123: Chris@2123: set -eu Chris@2123: Chris@2123: tmpdir=$(mktemp -d) Chris@2123: trap "rm -rf \$tmpdir\$" 0 Chris@2123: Chris@2123: #log="build.log" Chris@2123: Chris@2123: log="$tmpdir/make.log" Chris@2123: ./configure Chris@2123: make clean Chris@2123: make -j3 2>&1 | tee "$log" Chris@2123: Chris@2123: list="$tmpdir/tidy.list" Chris@2123: Chris@2123: grep '^g[+][+] ' "$log" | grep ' [-]c ' > "$list" Chris@2123: Chris@2123: cat "$list" | while read line ; do Chris@2123: Chris@2123: filename=${line##* } Chris@2123: remainder=${line% *} Chris@2123: cc=${remainder%% *} Chris@2123: ccargs=${remainder#* } Chris@2123: Chris@2123: ccargs=$(echo "$ccargs" | sed 's/-flto //') Chris@2123: Chris@2123: echo Chris@2123: Chris@2123: case "$filename" in Chris@2123: bq*) echo "ignoring $filename" ;; Chris@2123: o/*) echo "ignoring $filename" ;; Chris@2123: vamp-*) echo "ignoring $filename" ;; Chris@2123: dataquay/*) echo "ignoring $filename" ;; Chris@2123: src/*) echo "ignoring $filename" ;; Chris@2123: *) echo "not ignoring $filename" Chris@2123: echo clang-tidy $ctargs "$filename" -- $ccargs ; Chris@2123: clang-tidy $ctargs "$filename" -- $ccargs ;; Chris@2123: esac Chris@2123: done Chris@2123: