summaryrefslogtreecommitdiffstats
path: root/cppcheck.sh
blob: ebbeeaf8f92e96ad8521d5c1daa08656e2a40b47 (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
#!/usr/bin/env bash

# echo >>/tmp/cppcheck.log "cppcheck ${*}"

# shellcheck disable=SC2230
cppcheck=$(which cppcheck 2>/dev/null || command -v cppcheck 2>/dev/null)
[ -z "${cppcheck}" ] && echo >&2 "install cppcheck." && exit 1

processors=$(grep -c ^processor /proc/cpuinfo)
[ $(( processors )) -lt 1 ] && processors=1

base="$(dirname "${0}")"
[ "${base}" = "." ] && base="${PWD}"

cd "${base}" || exit 1

[ ! -d "cppcheck-build" ] && mkdir "cppcheck-build"

file="${1}"
shift
# shellcheck disable=SC2235
([ "${file}" = "${base}" ] || [ -z "${file}" ]) && file="${base}"

"${cppcheck}" \
	-j ${processors} \
	--cppcheck-build-dir="cppcheck-build" \
	-I .. \
	--force \
	--enable=warning,performance,portability,information \
	--library=gnu \
	--library=posix \
	--suppress="unusedFunction:*" \
	--suppress="nullPointerRedundantCheck:*" \
	--suppress="readdirCalled:*" \
	"${file}" "${@}"