From: Anders F Björklund Date: Mon, 11 Jun 2018 18:25:02 +0000 (+0200) Subject: Add target to run shellcheck on test bash scripts X-Git-Tag: v3.5~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e4d8dc6534b99bdbc5103133a659325cbf4508af;p=thirdparty%2Fccache.git Add target to run shellcheck on test bash scripts --- diff --git a/dev.mk.in b/dev.mk.in index fd599b822..c992466b1 100644 --- a/dev.mk.in +++ b/dev.mk.in @@ -7,6 +7,8 @@ A2X = a2x ASCIIDOC = asciidoc CPPCHECK = cppcheck CPPCHECK_SUPPRESSIONS = misc/cppcheck-suppressions.txt +SHELLCHECK = shellcheck +SHELLCHECK_EXCLUDES = misc/shellcheck-excludes.txt SCAN_BUILD = scan-build DOCKER = docker GPERF = gperf @@ -191,6 +193,10 @@ cppcheck: --inline-suppr -q --enable=all --force \ $(non_3pp_sources) src/main.c $(test_sources) +.PHONY: shellcheck +shellcheck: test/suites/*.bash + $(SHELLCHECK) --shell=bash --exclude=$(shell sed -e 's/:.*//' <$(SHELLCHECK_EXCLUDES) | grep -v '#' | tr '\n' ',' | sed -e 's/,$$//') $^ + .PHONY: uncrustify uncrustify: uncrustify -c misc/uncrustify.cfg --no-backup --replace $(filter-out $(uncrustify_exclude_files), $(base_sources)) $(test_sources) diff --git a/misc/shellcheck-excludes.txt b/misc/shellcheck-excludes.txt new file mode 100644 index 000000000..9c6aad62b --- /dev/null +++ b/misc/shellcheck-excludes.txt @@ -0,0 +1,10 @@ +SC2148: Tips depend on target shell and yours is unknown. Add a shebang. +# the below excludes are (mostly) about bourne shell and style issues +SC2001: See if you can use ${variable//search/replace} instead. +SC2006: Use $(..) instead of legacy `..`. +SC2046: Quote this to prevent word splitting. +SC2086: Double quote to prevent globbing and word splitting. +SC2094: Make sure not to read and write the same file in the same pipeline. +SC2103: Consider using ( subshell ), 'cd foo||exit', or pushd/popd instead. +SC2155: Declare and assign separately to avoid masking return values. +SC2129: Consider using { cmd1; cmd2; } >> file instead of individual redirects.