[ci]: use cppcheck and clang-tidy for static analysis

This commit is contained in:
NRK 2022-06-15 11:55:16 +06:00 committed by Gitea
parent 658a935c04
commit f23d57d4ad
3 changed files with 46 additions and 0 deletions

27
.woodpecker/analysis.yml Normal file
View file

@ -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"

View file

@ -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

View file

@ -55,6 +55,9 @@ version.h: config.mk .git/index
.git/index:
dump_cppflags:
@echo $(nsxiv_cppflags)
clean:
rm -f *.o nsxiv version.h