From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 779596DE0A9A for ; Sat, 26 Aug 2017 07:42:03 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[AWL=0.011, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pupLMHF9uTOe for ; Sat, 26 Aug 2017 07:42:00 -0700 (PDT) Received: from fethera.tethera.net (fethera.tethera.net [198.245.60.197]) by arlo.cworth.org (Postfix) with ESMTPS id 3C63D6DE0350 for ; Sat, 26 Aug 2017 07:42:00 -0700 (PDT) Received: from remotemail by fethera.tethera.net with local (Exim 4.89) (envelope-from ) id 1dlcEB-00039K-Ai; Sat, 26 Aug 2017 10:38:23 -0400 Received: (nullmailer pid 11246 invoked by uid 1000); Sat, 26 Aug 2017 14:41:55 -0000 From: David Bremner To: notmuch@notmuchmail.org, notmuch@freelists.org Subject: [PATCH 1/5] build: add target to run cppcheck Date: Sat, 26 Aug 2017 11:41:37 -0300 Message-Id: <20170826144141.11140-2-david@tethera.net> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170826144141.11140-1-david@tethera.net> References: <20170826144141.11140-1-david@tethera.net> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Aug 2017 14:42:03 -0000 The advantage of having a target as opposed to running cppcheck by hand - reuse list of source files - output errors in a format parsable, e.g. by emacs - returns exit code 1 on any error, for possibly use in other targets. Things not addressed here - parallelism. Doing this correctly seems like a rabbit-hole. - what target to invoke this from. The 8s delay (on my machine) seems acceptable, but not necessarily the resulting fragility in autobuilders. --- Makefile.local | 10 ++++++++++ configure | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/Makefile.local b/Makefile.local index af12ca7f..6a5168f1 100644 --- a/Makefile.local +++ b/Makefile.local @@ -283,6 +283,16 @@ CLEAN := $(CLEAN) version.stamp notmuch-*.tar.gz.tmp DISTCLEAN := $(DISTCLEAN) .first-build-message Makefile.config sh.config +CLEAN := $(CLEAN) cppcheck.stamp +cppcheck: cppcheck.stamp +cppcheck.stamp: $(SRCS) +ifeq ($(HAVE_CPPCHECK),1) + cppcheck --template="{file}:{line}: {severity}: {message}" --quiet --error-exitcode=1 ${SRCS} + touch $@ +else + @echo No cppcheck installed; skipping static checking +endif + DEPS := $(SRCS:%.c=.deps/%.d) DEPS := $(DEPS:%.cc=.deps/%.d) -include $(DEPS) diff --git a/configure b/configure index c5e2ffed..364854f3 100755 --- a/configure +++ b/configure @@ -646,6 +646,14 @@ if [ $WITH_DESKTOP = "1" ]; then fi fi +printf "Checking for cppcheck... " +if command -v cppcheck > /dev/null; then + have_cppcheck=1 + printf "Yes.\n" +else + printf "No.\n" +fi + libdir_in_ldconfig=0 printf "Checking which platform we are on... " @@ -1065,6 +1073,9 @@ zsh_completion_dir = ${ZSHCOMLETIONDIR:=\$(prefix)/share/zsh/functions/Completio # build its own version) HAVE_CANONICALIZE_FILE_NAME = ${have_canonicalize_file_name} +# Whether the cppcheck static checker is available +HAVE_CPPCHECK = ${have_cppcheck} + # Whether the getline function is available (if not, then notmuch will # build its own version) HAVE_GETLINE = ${have_getline} -- 2.14.1