summaryrefslogtreecommitdiffstats
path: root/build-root/scripts/coverity-blame.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build-root/scripts/coverity-blame.sh')
-rwxr-xr-xbuild-root/scripts/coverity-blame.sh36
1 files changed, 36 insertions, 0 deletions
diff --git a/build-root/scripts/coverity-blame.sh b/build-root/scripts/coverity-blame.sh
new file mode 100755
index 00000000..8775ea48
--- /dev/null
+++ b/build-root/scripts/coverity-blame.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# Read coverity email on stdin
+# whenever we find a filename & line number reference, go git-blame it
+
+file=
+start=
+end=
+
+while read line; do
+ if echo "$line" | grep -q '^/.*: '; then
+ echo "$line"
+ file=$(echo "$line" | cut -d: -f1)
+ elif echo "$line" | grep -q '^[*]'; then
+ echo "$line"
+ file=
+ start=
+ end=
+ elif echo "$line" | grep -q '^[0-9][0-9]*'; then
+ num=$(echo "$line" | awk '{print $1}')
+ [ -z "$start" ] && start=$num
+ #git blame -L "$num,+1" ".$file" | cat
+ elif [ -z "$line" ]; then
+ if [ "$start" -a "$num" -a "$file" ]; then
+ end=$num
+ git blame --date=short -L "$start,$end" ".$file" | cat
+ start=
+ end=
+ num=
+ else
+ echo "$line"
+ fi
+ else
+ echo "$line"
+ fi
+done