aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNRK <nrk@disroot.org>2022-06-15 07:55:16 +0200
committerGitea <gitea@fake.local>2022-06-25 08:27:01 +0200
commitf23d57d4ada2dbab52e26073d462ebee57cf53a9 (patch)
treef22fde4580fba7aac52d3fafecda0130b66dcb35
parent658a935c04ba6dd1bfb370ad0e209046dd90402f (diff)
downloadnsxiv-f23d57d4ada2dbab52e26073d462ebee57cf53a9.tar.zst
[ci]: use cppcheck and clang-tidy for static analysis
-rw-r--r--.woodpecker/analysis.yml27
-rw-r--r--.woodpecker/clang-tidy-checks16
-rw-r--r--Makefile3
3 files changed, 46 insertions, 0 deletions
diff --git a/.woodpecker/analysis.yml b/.woodpecker/analysis.yml
new file mode 100644
index 0000000..926dbbf
--- /dev/null
+++ b/.woodpecker/analysis.yml
@@ -0,0 +1,27 @@
+pipeline:
+ analysis:
+ image: alpine
+ when:
+ branch: master
+ commands: |
+ apk add --no-cache build-base cppcheck clang-extra-tools \
+ imlib2-dev xorgproto \
+ libxft-dev libexif-dev giflib-dev libwebp-dev >/dev/null
+ make config.h version.h
+ std="c99"
+ run_cppcheck() {
+ cppcheck --std="$std" --enable=performance,portability \
+ --force --quiet --inline-suppr --error-exitcode=1 \
+ --max-ctu-depth=8 -j"$(nproc)" \
+ $(make OPT_DEP_DEFAULT="$1" dump_cppflags) \
+ *.c
+ }
+ run_tidy() {
+ checks="$(sed '/^#/d' .woodpecker/clang-tidy-checks | paste -d ',' -s)"
+ clang-tidy --warnings-as-errors="*" --checks="$checks" --quiet *.c \
+ -- -std="$std" $(make OPT_DEP_DEFAULT="$1" dump_cppflags)
+ }
+ run_cppcheck "0"
+ run_cppcheck "1"
+ run_tidy "0"
+ run_tidy "1"
diff --git a/.woodpecker/clang-tidy-checks b/.woodpecker/clang-tidy-checks
new file mode 100644
index 0000000..67394d4
--- /dev/null
+++ b/.woodpecker/clang-tidy-checks
@@ -0,0 +1,16 @@
+# checks
+clang-analyzer-*,clang-diagnostic-*,bugprone-*,performance-*,modernize-*
+misc-*,readability-*,android-cloexec-*,cert-*
+
+# silence
+-misc-unused-parameters
+-bugprone-easily-swappable-parameters,-bugprone-narrowing-conversions,-bugprone-incorrect-roundings
+-bugprone-implicit-widening-of-multiplication-result,-bugprone-integer-division
+-readability-braces-around-statements,-readability-magic-numbers,-readability-isolate-declaration
+-readability-function-cognitive-complexity,-readability-else-after-return
+-readability-uppercase-literal-suffix,-readability-avoid-const-params-in-decls
+-android-cloexec-fopen,-android-cloexec-pipe
+
+# false positive warnings
+-clang-analyzer-valist.Uninitialized
+-misc-no-recursion
diff --git a/Makefile b/Makefile
index 0ada98d..cc8f3ce 100644
--- a/Makefile
+++ b/Makefile
@@ -55,6 +55,9 @@ version.h: config.mk .git/index
.git/index:
+dump_cppflags:
+ @echo $(nsxiv_cppflags)
+
clean:
rm -f *.o nsxiv version.h