diff --git a/build_tools/cppcheck.sh b/build_tools/cppcheck.sh
index 412de8347..178686bb2 100755
--- a/build_tools/cppcheck.sh
+++ b/build_tools/cppcheck.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 
-cppcheck --enable=all --std=posix --quiet \
-         --suppressions-list=build_tools/cppcheck.suppressions \
+cppcheck --std=posix --quiet \
+         --suppressions-list=build_tools/cppcheck.suppressions --inline-suppr \
          --rule-file=build_tools/cppcheck.rules \
          --force \
-         ./src/
+         ${@:---enable=all ./src/}
diff --git a/build_tools/lint.fish b/build_tools/lint.fish
index 69e93b3cf..c5b3c824e 100755
--- a/build_tools/lint.fish
+++ b/build_tools/lint.fish
@@ -83,20 +83,7 @@ if set -q c_files[1]
         echo ========================================
         echo Running cppcheck
         echo ========================================
-        # The stderr to stdout redirection is because cppcheck, incorrectly IMHO, writes its
-        # diagnostic messages to stderr. Anyone running this who wants to capture its output will
-        # expect those messages to be written to stdout.
-        set -l cn (set_color normal)
-        set -l cb (set_color --bold)
-        set -l cu (set_color --underline)
-        set -l cm (set_color magenta)
-        set -l cbrm (set_color brmagenta)
-        set -l template "[$cb$cu{file}$cn$cb:{line}$cn] $cbrm{severity}$cm ({id}):$cn\n {message}"
-        set cppcheck_args -q --verbose --std=c++11 --std=posix --language=c++ --template $template \
-            --suppress=missingIncludeSystem --inline-suppr --enable=$cppchecks \
-            --rule-file=.cppcheck.rules --suppressions-list=.cppcheck.suppressions $cppcheck_args
-
-        cppcheck $cppcheck_args $c_files 2>&1
+        build_tools/cppcheck.sh --enable=$cppchecks $c_files 2>&1
 
         echo
         echo ========================================