Mercurial > hg > sonic-visualiser
diff misc/run-clang-tidy.sh @ 2123:7c30a7f20c6a fix-static-analysis
Add run-clang-tidy script
author | Chris Cannam |
---|---|
date | Thu, 22 Nov 2018 14:57:22 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/run-clang-tidy.sh Thu Nov 22 14:57:22 2018 +0000 @@ -0,0 +1,61 @@ +#!/bin/bash + +usage() { + echo + echo " $0: run clang-tidy on a build with supplied arguments" 1>&2 + echo + echo " Run this from the root of the source tree, on a Linux system." 1>&2 + echo " Assumes that \"./configure && make clean && make\" will produce a successful" 1>&2 + echo " build using g++." 1>&2 + echo " All arguments are passed to clang-tidy." 1>&2 + echo + exit 2 +} + +if [ t"$1" = "t" ]; then + usage +fi + +ctargs="$@" + +echo "clang-tidy args: $ctargs" + +set -eu + +tmpdir=$(mktemp -d) +trap "rm -rf \$tmpdir\$" 0 + +#log="build.log" + +log="$tmpdir/make.log" +./configure +make clean +make -j3 2>&1 | tee "$log" + +list="$tmpdir/tidy.list" + +grep '^g[+][+] ' "$log" | grep ' [-]c ' > "$list" + +cat "$list" | while read line ; do + + filename=${line##* } + remainder=${line% *} + cc=${remainder%% *} + ccargs=${remainder#* } + + ccargs=$(echo "$ccargs" | sed 's/-flto //') + + echo + + case "$filename" in + bq*) echo "ignoring $filename" ;; + o/*) echo "ignoring $filename" ;; + vamp-*) echo "ignoring $filename" ;; + dataquay/*) echo "ignoring $filename" ;; + src/*) echo "ignoring $filename" ;; + *) echo "not ignoring $filename" + echo clang-tidy $ctargs "$filename" -- $ccargs ; + clang-tidy $ctargs "$filename" -- $ccargs ;; + esac +done +