summaryrefslogtreecommitdiff
path: root/utils/warning-blame.sh
blob: 3630ac5354d5e8968572249ebf3de0bd77163a82 (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

# where to store the processed list of warnings
WARNING_LIST=/tmp/warning-list

if [ $# -gt 1 ]; then
  if [ -f $1 ]; then
    cp $1 ${WARNING_LIST}
  else
    echo "Need a valid warning file"
    exit 1
  fi
else
  make clean 2>&1 >/dev/null
  make nsgtk 2>&1 |grep "warning:" | sort | uniq > ${WARNING_LIST}
fi

for blamefile in $(cat ${WARNING_LIST} | cut -f 1 -d ':'  | sort | uniq ); do
  if [ -f ${blamefile} ]; then
    svn blame ${blamefile} >/tmp/blame

    cat ${WARNING_LIST} | grep "^${blamefile}" >/tmp/blame-warnings

    while read warning; do
      echo ${warning}

      lineno=$(echo ${warning} | cut -f 2 -d ':' ; )

      cat /tmp/blame | head -n ${lineno} | tail -n 1

    done < /tmp/blame-warnings
    rm /tmp/blame-warnings
  else
    echo "Unable to find ${blamefile}"
  fi
done