aboutsummaryrefslogtreecommitdiffstats
path: root/extras/scripts/coverity-blame
blob: 8775ea48d99ed88b24df103433e074de2cffee58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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