diff options
author | Přemysl Janouch <p@janouch.name> | 2018-06-21 23:37:40 +0200 |
---|---|---|
committer | Přemysl Janouch <p@janouch.name> | 2018-06-21 23:46:03 +0200 |
commit | b1a89f313a2424b5b06349c141876b68903a1c05 (patch) | |
tree | 82cc52779ee9e2cfa21c5acc75f2078f91768a4b | |
parent | fab5115cd09a44244a7c681fa5ab79d047a94d4f (diff) | |
download | xK-b1a89f313a2424b5b06349c141876b68903a1c05.tar.gz xK-b1a89f313a2424b5b06349c141876b68903a1c05.tar.xz xK-b1a89f313a2424b5b06349c141876b68903a1c05.zip |
degesch: add static analysis for the logger
Caught two more occurences than I was able to find by just scanning
the source, so the effort wasn't in vain.
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rwxr-xr-x | test-static | 14 |
2 files changed, 16 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5152bb6..0af2dcd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,6 +180,8 @@ endfunction (make_tests_for) include (CTest) if (BUILD_TESTING) make_tests_for (degesch) + add_test (NAME custom-static-analysis + COMMAND ${PROJECT_SOURCE_DIR}/test-static) endif (BUILD_TESTING) # Various clang-based diagnostics, loads of fake positives and spam diff --git a/test-static b/test-static new file mode 100755 index 0000000..0c22b0d --- /dev/null +++ b/test-static @@ -0,0 +1,14 @@ +#!/bin/sh +# We don't use printf's percent notation with our custom logging mechanism, +# so the compiler cannot check it for us like it usually does +perl -n0777 - "$(dirname "$0")"/degesch.c <<-'END' + while (/\blog_[^ ]+\s*\([^"()]*"[^"]*%[^%][^"]*"/gm) { + my ($p, $m) = ($`, $&); + printf "$ARGV:%d: suspicious log format string: %s...\n", + (1 + $p =~ tr/\n//), ($m =~ s/\s+/ /rg); + $status = 1; + } + END { + exit $status; + } +END |