From: Nicholas Piggin <npiggin@gmail.com>
To: kvm-riscv@lists.infradead.org
Subject: [kvm-unit-tests PATCH v3 1/5] Add initial shellcheck checking
Date: Wed, 1 May 2024 21:29:30 +1000 [thread overview]
Message-ID: <20240501112938.931452-2-npiggin@gmail.com> (raw)
In-Reply-To: <20240501112938.931452-1-npiggin@gmail.com>
This adds a basic shellcheck style file, some directives to help
find scripts, and a make shellcheck target.
When changes settle down this could be made part of the standard
build / CI flow.
Suggested-by: Andrew Jones <andrew.jones@linux.dev>
Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
.shellcheckrc | 30 ++++++++++++++++++++++++++++++
Makefile | 4 ++++
README.md | 3 +++
scripts/common.bash | 5 ++++-
4 files changed, 41 insertions(+), 1 deletion(-)
create mode 100644 .shellcheckrc
diff --git a/.shellcheckrc b/.shellcheckrc
new file mode 100644
index 000000000..491af18bd
--- /dev/null
+++ b/.shellcheckrc
@@ -0,0 +1,30 @@
+# shellcheck configuration file
+external-sources=true
+
+# Optional extras -- https://www.shellcheck.net/wiki/Optional
+# Possibilities, e.g., -
+# quote?safe?variables
+# require-double-brackets
+# require-variable-braces
+# add-default-case
+
+# Disable SC2004 style? I.e.,
+# In run_tests.sh line 67:
+# if (( $unittest_run_queues <= 0 )); then
+# ^------------------^ SC2004 (style): $/${} is unnecessary on arithmetic variables.
+disable=SC2004
+
+# Disable SC2086 for now, double quote to prevent globbing and word
+# splitting. There are lots of places that use it for word splitting
+# (e.g., invoking commands with arguments) that break. Should have a
+# more consistent approach for this (perhaps use arrays for such cases)
+# but for now disable.
+# SC2086 (info): Double quote to prevent globbing and word splitting.
+disable=SC2086
+
+# Disable SC2235. Most developers are used to seeing expressions
+# like a || (b && c), not a || { b && c ; }. The subshell overhead in
+# kvm-unit-tests is negligible as it's not shell-heavy in the first
+# place (time is dominated by qemu startup/shutdown and test execution)
+# SC2235 (style): Use { ..; } instead of (..) to avoid subshell overhead.
+disable=SC2235
diff --git a/Makefile b/Makefile
index 4f35fffc6..6240d8dfa 100644
--- a/Makefile
+++ b/Makefile
@@ -141,6 +141,10 @@ cscope:
-name '*.[chsS]' -exec realpath --relative-base=$(CURDIR) {} \; | sort -u > ./cscope.files
cscope -bk
+.PHONY: shellcheck
+shellcheck:
+ shellcheck -a run_tests.sh */run */efi/run scripts/mkstandalone.sh
+
.PHONY: tags
tags:
ctags -R
diff --git a/README.md b/README.md
index 6e82dc225..2d6f7db56 100644
--- a/README.md
+++ b/README.md
@@ -193,3 +193,6 @@ with `git config diff.orderFile scripts/git.difforder` enables it.
We strive to follow the Linux kernels coding style so it's recommended
to run the kernel's ./scripts/checkpatch.pl on new patches.
+
+Also run `make shellcheck` before submitting a patch which touches bash
+scripts.
diff --git a/scripts/common.bash b/scripts/common.bash
index b9413d683..5e9ad53e2 100644
--- a/scripts/common.bash
+++ b/scripts/common.bash
@@ -78,8 +78,11 @@ function arch_cmd()
}
# The current file has to be the only file sourcing the arch helper
-# file
+# file. Shellcheck can't follow this so help it out. There doesn't appear to be a
+# way to specify multiple alternatives, so we will have to rethink this if things
+# get more complicated.
ARCH_FUNC=scripts/${ARCH}/func.bash
if [ -f "${ARCH_FUNC}" ]; then
+# shellcheck source=scripts/s390x/func.bash
source "${ARCH_FUNC}"
fi
--
2.43.0
WARNING: multiple messages have this Message-ID (diff)
From: Nicholas Piggin <npiggin@gmail.com>
To: Andrew Jones <andrew.jones@linux.dev>
Cc: "Nicholas Piggin" <npiggin@gmail.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Alexandru Elisei" <alexandru.elisei@arm.com>,
"Eric Auger" <eric.auger@redhat.com>,
"Janosch Frank" <frankja@linux.ibm.com>,
"Claudio Imbrenda" <imbrenda@linux.ibm.com>,
"Nico Böhr" <nrb@linux.ibm.com>,
"David Hildenbrand" <david@redhat.com>,
"Shaoqin Huang" <shahuang@redhat.com>,
"Nikos Nikoleris" <nikos.nikoleris@arm.com>,
"David Woodhouse" <dwmw@amazon.co.uk>,
"Ricardo Koller" <ricarkol@google.com>,
rminmin <renmm6@chinaunicom.cn>, "Gavin Shan" <gshan@redhat.com>,
"Nina Schoetterl-Glausch" <nsg@linux.ibm.com>,
"Sean Christopherson" <seanjc@google.com>,
kvm@vger.kernel.org, kvmarm@lists.linux.dev,
kvm-riscv@lists.infradead.org, linux-s390@vger.kernel.org
Subject: [kvm-unit-tests PATCH v3 1/5] Add initial shellcheck checking
Date: Wed, 1 May 2024 21:29:30 +1000 [thread overview]
Message-ID: <20240501112938.931452-2-npiggin@gmail.com> (raw)
In-Reply-To: <20240501112938.931452-1-npiggin@gmail.com>
This adds a basic shellcheck style file, some directives to help
find scripts, and a make shellcheck target.
When changes settle down this could be made part of the standard
build / CI flow.
Suggested-by: Andrew Jones <andrew.jones@linux.dev>
Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
.shellcheckrc | 30 ++++++++++++++++++++++++++++++
Makefile | 4 ++++
README.md | 3 +++
scripts/common.bash | 5 ++++-
4 files changed, 41 insertions(+), 1 deletion(-)
create mode 100644 .shellcheckrc
diff --git a/.shellcheckrc b/.shellcheckrc
new file mode 100644
index 000000000..491af18bd
--- /dev/null
+++ b/.shellcheckrc
@@ -0,0 +1,30 @@
+# shellcheck configuration file
+external-sources=true
+
+# Optional extras -- https://www.shellcheck.net/wiki/Optional
+# Possibilities, e.g., -
+# quote‐safe‐variables
+# require-double-brackets
+# require-variable-braces
+# add-default-case
+
+# Disable SC2004 style? I.e.,
+# In run_tests.sh line 67:
+# if (( $unittest_run_queues <= 0 )); then
+# ^------------------^ SC2004 (style): $/${} is unnecessary on arithmetic variables.
+disable=SC2004
+
+# Disable SC2086 for now, double quote to prevent globbing and word
+# splitting. There are lots of places that use it for word splitting
+# (e.g., invoking commands with arguments) that break. Should have a
+# more consistent approach for this (perhaps use arrays for such cases)
+# but for now disable.
+# SC2086 (info): Double quote to prevent globbing and word splitting.
+disable=SC2086
+
+# Disable SC2235. Most developers are used to seeing expressions
+# like a || (b && c), not a || { b && c ; }. The subshell overhead in
+# kvm-unit-tests is negligible as it's not shell-heavy in the first
+# place (time is dominated by qemu startup/shutdown and test execution)
+# SC2235 (style): Use { ..; } instead of (..) to avoid subshell overhead.
+disable=SC2235
diff --git a/Makefile b/Makefile
index 4f35fffc6..6240d8dfa 100644
--- a/Makefile
+++ b/Makefile
@@ -141,6 +141,10 @@ cscope:
-name '*.[chsS]' -exec realpath --relative-base=$(CURDIR) {} \; | sort -u > ./cscope.files
cscope -bk
+.PHONY: shellcheck
+shellcheck:
+ shellcheck -a run_tests.sh */run */efi/run scripts/mkstandalone.sh
+
.PHONY: tags
tags:
ctags -R
diff --git a/README.md b/README.md
index 6e82dc225..2d6f7db56 100644
--- a/README.md
+++ b/README.md
@@ -193,3 +193,6 @@ with `git config diff.orderFile scripts/git.difforder` enables it.
We strive to follow the Linux kernels coding style so it's recommended
to run the kernel's ./scripts/checkpatch.pl on new patches.
+
+Also run `make shellcheck` before submitting a patch which touches bash
+scripts.
diff --git a/scripts/common.bash b/scripts/common.bash
index b9413d683..5e9ad53e2 100644
--- a/scripts/common.bash
+++ b/scripts/common.bash
@@ -78,8 +78,11 @@ function arch_cmd()
}
# The current file has to be the only file sourcing the arch helper
-# file
+# file. Shellcheck can't follow this so help it out. There doesn't appear to be a
+# way to specify multiple alternatives, so we will have to rethink this if things
+# get more complicated.
ARCH_FUNC=scripts/${ARCH}/func.bash
if [ -f "${ARCH_FUNC}" ]; then
+# shellcheck source=scripts/s390x/func.bash
source "${ARCH_FUNC}"
fi
--
2.43.0
next prev parent reply other threads:[~2024-05-01 11:29 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-01 11:29 [kvm-unit-tests PATCH v3 0/5] add shellcheck support Nicholas Piggin
2024-05-01 11:29 ` Nicholas Piggin
2024-05-01 11:29 ` Nicholas Piggin [this message]
2024-05-01 11:29 ` [kvm-unit-tests PATCH v3 1/5] Add initial shellcheck checking Nicholas Piggin
2024-05-01 11:29 ` [kvm-unit-tests PATCH v3 2/5] shellcheck: Fix SC2155 Nicholas Piggin
2024-05-01 11:29 ` Nicholas Piggin
2024-05-01 11:29 ` [kvm-unit-tests PATCH v3 3/5] shellcheck: Fix SC2124 Nicholas Piggin
2024-05-01 11:29 ` Nicholas Piggin
2024-05-01 11:29 ` [kvm-unit-tests PATCH v3 4/5] shellcheck: Fix SC2294 Nicholas Piggin
2024-05-01 11:29 ` Nicholas Piggin
2024-05-01 11:29 ` [kvm-unit-tests PATCH v3 5/5] shellcheck: Suppress various messages Nicholas Piggin
2024-05-01 11:29 ` Nicholas Piggin
2024-05-02 8:12 ` [kvm-unit-tests PATCH v3 0/5] add shellcheck support Andrew Jones
2024-05-02 8:12 ` Andrew Jones
2024-05-02 8:23 ` Thomas Huth
2024-05-02 8:23 ` Thomas Huth
2024-05-02 8:56 ` Andrew Jones
2024-05-02 8:56 ` Andrew Jones
2024-05-02 9:34 ` Thomas Huth
2024-05-02 9:34 ` Thomas Huth
2024-05-02 9:48 ` Andrew Jones
2024-05-02 9:48 ` Andrew Jones
2024-05-03 5:02 ` Nicholas Piggin
2024-05-03 5:02 ` Nicholas Piggin
2024-05-03 5:13 ` Thomas Huth
2024-05-03 5:13 ` Thomas Huth
2024-05-07 4:26 ` Nicholas Piggin
2024-05-07 4:26 ` Nicholas Piggin
2024-05-03 5:11 ` Nicholas Piggin
2024-05-03 5:11 ` Nicholas Piggin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240501112938.931452-2-npiggin@gmail.com \
--to=npiggin@gmail.com \
--cc=kvm-riscv@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.