aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNRK <nrk@disroot.org>2023-06-15 17:25:54 +0200
committerNRK <nrk@disroot.org>2023-06-15 17:25:54 +0200
commit28018e92d3e2fa47d58a216bab489cbd81d8e974 (patch)
tree4fdc6076f24c59b6ea44387cdd1f93979eca0129
parentc03ec39437b473526080f496d6c8564e98bea1d7 (diff)
downloadnsxiv-28018e92d3e2fa47d58a216bab489cbd81d8e974.tar.zst
CI: misc cleanups + faster analysis (#449)
* switch to git ls-files to avoid picking up any other local .c files * enable assertions during static analysis since we used some assertions to disable/silence certain warnings. * update TCC commit hash to a more recent one * parallelize static analysis cppcheck already has -j argument to parallelize it's analysis and provide results faster, clang-tidy unfortunately doesn't. so use xargs -P to archive parallel execution. on my system this brings down the analysis time from ~27s to ~5s.
-rw-r--r--.github/workflows/build.yml2
-rwxr-xr-xetc/woodpecker/analysis.sh17
-rw-r--r--etc/woodpecker/analysis.yml2
-rw-r--r--etc/woodpecker/build.yml2
4 files changed, 13 insertions, 10 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4619bb7..3c3b3c1 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -16,7 +16,7 @@ jobs:
sudo apt-get install libimlib2 libimlib2-dev xserver-xorg-core xserver-xorg-dev \
libxft2 libxft-dev libexif12 libexif-dev \
gcc clang git bc
- TCC_SHA="027b8fb9b88fe137447fb8bb1b61079be9702472"
+ TCC_SHA="29ae3ed4d5b83eec43598d6cd7949bccb41c8083"
wget "https://github.com/TinyCC/tinycc/archive/${TCC_SHA}.tar.gz" && tar xzf "${TCC_SHA}.tar.gz"
( cd "tinycc-$TCC_SHA" && ./configure && make -j"$(nproc)" && sudo make install; )
- name: build
diff --git a/etc/woodpecker/analysis.sh b/etc/woodpecker/analysis.sh
index 330d140..5a227ce 100755
--- a/etc/woodpecker/analysis.sh
+++ b/etc/woodpecker/analysis.sh
@@ -1,21 +1,24 @@
#!/bin/sh -e
std="c99"
+NProc=$(( $(nproc) / 4 ))
+if [ -z "$NProc" ] || [ "$NProc" -lt 1 ]; then NProc="1"; fi
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) \
+ --max-ctu-depth=8 -j"$NProc" \
+ $(make OPT_DEP_DEFAULT="$1" dump_cppflags) -DDEBUG \
--suppress=varFuncNullUB --suppress=uninitvar \
- *.c
+ $(git ls-files *.c)
}
run_tidy() {
checks="$(sed '/^#/d' etc/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)
+ git ls-files *.c | xargs -P"$NProc" -I{} clang-tidy --quiet \
+ --warnings-as-errors="*" --checks="$checks" {} \
+ -- -std="$std" $(make OPT_DEP_DEFAULT="$1" dump_cppflags) -DDEBUG
}
-run_cppcheck "0"; run_cppcheck "1";
-run_tidy "0"; run_tidy "1";
+run_cppcheck "0" & run_cppcheck "1" & run_tidy "0" & run_tidy "1";
+wait
diff --git a/etc/woodpecker/analysis.yml b/etc/woodpecker/analysis.yml
index 65da7aa..9ebcc4f 100644
--- a/etc/woodpecker/analysis.yml
+++ b/etc/woodpecker/analysis.yml
@@ -4,7 +4,7 @@ pipeline:
analysis:
image: alpine
commands: |
- apk add --no-cache build-base cppcheck clang-extra-tools \
+ apk add --no-cache build-base cppcheck clang-extra-tools git \
imlib2-dev xorgproto \
libxft-dev libexif-dev giflib-dev libwebp-dev >/dev/null
make config.h version.h
diff --git a/etc/woodpecker/build.yml b/etc/woodpecker/build.yml
index eced0d1..7c79a90 100644
--- a/etc/woodpecker/build.yml
+++ b/etc/woodpecker/build.yml
@@ -5,7 +5,7 @@ pipeline:
build:
image: alpine
environment:
- - TCC_SHA=027b8fb9b88fe137447fb8bb1b61079be9702472
+ - TCC_SHA=29ae3ed4d5b83eec43598d6cd7949bccb41c8083
commands: |
apk add --no-cache \
imlib2 imlib2-dev xorgproto \