]>
Commit | Line | Data |
---|---|---|
5cdca5b1 | 1 | # Global ShellCheck exclusions: |
8df0bde3 DS |
2 | # |
3 | # ShellCheck can't follow non-constant source. Use a directive to specify location. [SC1090] | |
4 | # Not following: a was not specified as input (see shellcheck -x). [SC1091] | |
5 | # Prefer putting braces around variable references even when not strictly required. [SC2250] | |
a5087965 | 6 | # Consider invoking this command separately to avoid masking its return value (or use '|| true' to ignore). [SC2312] |
13ec73a0 | 7 | # Command appears to be unreachable. Check usage (or ignore if invoked indirectly). [SC2317] |
8df0bde3 DS |
8 | # In POSIX sh, 'local' is undefined. [SC2039] # older ShellCheck versions |
9 | # In POSIX sh, 'local' is undefined. [SC3043] # newer ShellCheck versions | |
5cdca5b1 AZ |
10 | |
11 | SHELLCHECKSCRIPTS = | |
12 | ||
13 | JUST_SHELLCHECK_OPTS = $(addprefix shellcheck-here-,$(subst /,^,$(1))) | |
14 | JUST_CHECKBASHISMS_OPTS = $(addprefix checkbashisms-here-,$(subst /,^,$(1))) | |
15 | SHELLCHECK_OPTS = $(call JUST_SHELLCHECK_OPTS,$(1)) $(call JUST_CHECKBASHISMS_OPTS,$(1)) | |
16 | ||
0425d588 | 17 | PHONY += shellcheck |
5cdca5b1 AZ |
18 | |
19 | _STGT = $(subst ^,/,$(subst shellcheck-here-,,$@)) | |
20 | shellcheck-here-%: | |
c3ef9f75 | 21 | if HAVE_SHELLCHECK |
13ec73a0 | 22 | shellcheck --format=gcc --enable=all --exclude=SC1090,SC1091,SC2039,SC2250,SC2312,SC2317,SC3043 $$([ -n "$(SHELLCHECK_SHELL)" ] && echo "--shell=$(SHELLCHECK_SHELL)") "$$([ -e "$(_STGT)" ] || echo "$(srcdir)/")$(_STGT)" |
c3ef9f75 | 23 | else |
5cdca5b1 | 24 | @echo "skipping shellcheck of" $(_STGT) "because shellcheck is not installed" |
c3ef9f75 | 25 | endif |
5cdca5b1 | 26 | |
0425d588 | 27 | shellcheck: $(SHELLCHECKSCRIPTS) $(call JUST_SHELLCHECK_OPTS,$(SHELLCHECKSCRIPTS)) |
f7d7ee05 | 28 | |
5cdca5b1 | 29 | |
0425d588 | 30 | PHONY += checkbashisms |
5cdca5b1 | 31 | |
f7d7ee05 | 32 | # command -v *is* specified by POSIX and every shell in existence supports it |
5cdca5b1 AZ |
33 | _BTGT = $(subst ^,/,$(subst checkbashisms-here-,,$@)) |
34 | checkbashisms-here-%: | |
f7d7ee05 | 35 | if HAVE_CHECKBASHISMS |
5cdca5b1 AZ |
36 | ! { [ -n "$(SHELLCHECK_SHELL)" ] && echo '#!/bin/$(SHELLCHECK_SHELL)'; cat "$$([ -e "$(_BTGT)" ] || echo "$(srcdir)/")$(_BTGT)"; } | \ |
37 | checkbashisms -npx 2>&1 | grep -vFe "'command' with option other than -p" -e 'command -v' -e 'any possible bashisms' $(CHECKBASHISMS_IGNORE) >&2 | |
f7d7ee05 | 38 | else |
5cdca5b1 | 39 | @echo "skipping checkbashisms of" $(_BTGT) "because checkbashisms is not installed" |
f7d7ee05 | 40 | endif |
5cdca5b1 | 41 | |
0425d588 | 42 | checkbashisms: $(SHELLCHECKSCRIPTS) $(call JUST_CHECKBASHISMS_OPTS,$(SHELLCHECKSCRIPTS)) |