xref: /illumos-gate/usr/src/tools/smatch/src/smatch_scripts/new_bugs.sh (revision f52943a93040563107b95bccb9db87d9971ef47d)
1#!/bin/bash
2
3new=$1
4old=$2
5
6if [ "$old" = "" ] ; then
7    echo "usage:  $0 <new file> <old file>"
8    exit 1
9fi
10
11#
12# If the $old and $new are very similar then we can
13# filter out a lot of bug just by doing a diff.
14#
15# But the line numbers change quite frequently so
16# really we only want to see if the line numbers
17# have changed inside the function.
18# The 42 in this message:
19# file.c +123 some_func(42) warn: blah blah blah
20#
21
22IFS="
23"
24for err in $(diff -u $old $new | cut -b 2- | egrep '(warn|error|warning):') ; do
25
26    # we are only interested in the last chunk.
27    # "some_func(42) warn: blah blah blah"
28    last=$(echo $err | cut -d ' ' -f 2-)
29
30    # There are some error message which include a second
31    # line number so we crudely chop that off.
32    last=$(echo $last | sed -e 's/line .*//')
33
34    if ! grep -Fq "$last" $old ; then
35	echo $err
36    fi
37done
38