aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtest-static12
1 files changed, 10 insertions, 2 deletions
diff --git a/test-static b/test-static
index 85d7f4f..4b74e24 100755
--- a/test-static
+++ b/test-static
@@ -1,8 +1,16 @@
#!/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
+# so the compiler cannot check it for us like it usually does.
+#
+# In clang-query terms, the string we're interested in can be found through:
+# set traversal IgnoreUnlessSpelledInSource
+# set output dump
+# match callExpr(callee(functionDecl(
+# hasName("log_full"))),
+# hasArgument(5, stringLiteral().bind("format")))
+# However, the tool is too restricted to be useful in a shell script.
perl -n0777 - "$(dirname "$0")"/xC.c <<-'END'
- while (/\blog_[^ ]+\s*\([^"()]*"[^"]*%[^%][^"]*"/gm) {
+ while (/\blog_[^ ]+\s*\([^"()]*"[^"]*%\w[^"]*"/gm) {
my ($p, $m) = ($`, $&);
printf "$ARGV:%d: suspicious log format string: %s...\n",
(1 + $p =~ tr/\n//), ($m =~ s/\s+/ /rg);