summaryrefslogtreecommitdiff
path: root/coccinelle/run-coccinelle.sh
blob: 520de0ac4215f012f644cefc78687133621d4b2e (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
#!/bin/bash -e

top="$(git rev-parse --show-toplevel)"
files="$(git ls-files ':/*.[ch]')"
args=

case "$1" in
    -i)
        args="$args --in-place"
        shift
        ;;
esac

if ! parallel -h >/dev/null; then
    echo 'Please install GNU parallel (package "parallel")'
    exit 1
fi

for SCRIPT in ${@-$top/coccinelle/*.cocci} ; do
    echo "--x-- Processing $SCRIPT --x--"
    TMPFILE=`mktemp`
    echo "+ spatch --sp-file $SCRIPT $args ..."
    parallel --halt now,fail=1 --keep-order --noswap --max-args=20 \
             spatch --sp-file $SCRIPT $args ::: $files \
             2>"$TMPFILE" || cat "$TMPFILE"
    echo -e "--x-- Processed $SCRIPT --x--\n"
done