summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis Fernandez <Luis.Fernandez@ibm.com>2019-09-18 10:34:25 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-09-18 23:14:10 -0500
commit08501bc6578ac2ba40cc803ac2449828ee6b1550 (patch)
tree5d668501903cf3de999c41b0ea7af817ecf95d6a
parentbfe56382ff15dd94196a45f9619e8b629740d5fa (diff)
downloadtalos-hostboot-08501bc6578ac2ba40cc803ac2449828ee6b1550.tar.gz
talos-hostboot-08501bc6578ac2ba40cc803ac2449828ee6b1550.zip
Patch For: Implement Static Analysis with cppcheck
CPPCHECK commands fail in machines that do not use bin/sh. Wrap commands inside an if-statement to only be read when User explicitly run the tool. Change-Id: Ifad56b0978c8190efa033203f661daf9259a4d43 RTC: 201451 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83938 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
-rw-r--r--makefile1
-rw-r--r--src/build/mkrules/cc.rules.mk71
2 files changed, 34 insertions, 38 deletions
diff --git a/makefile b/makefile
index 2863a0ef4..b1ab6e467 100644
--- a/makefile
+++ b/makefile
@@ -92,6 +92,7 @@ cppcheck:
${BUILDCPPCHECK}
export CXX_CHECK="$(CPPCHECK) $(filter -D%, $(CXXFLAGS)) $(INCFLAGS)" && \
export C_CHECK="$(CPPCHECK) $(filter -D%, $(CFLAGS)) $(INCFLAGS)" && \
+ export DOCPPCHECK=1 && \
${MAKE}
.PHONY: gcda_clean
diff --git a/src/build/mkrules/cc.rules.mk b/src/build/mkrules/cc.rules.mk
index 2d465e2e3..409166e29 100644
--- a/src/build/mkrules/cc.rules.mk
+++ b/src/build/mkrules/cc.rules.mk
@@ -47,27 +47,44 @@ SOURCE_FILE=$<
INCLUDE_DIRS=$(INCFLAGS)
endif
-$(OBJDIR)/%.o : %.C
- @mkdir -p $(OBJDIR)
- $(C2) " CXX $(notdir $<)"
- $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \
- -o $@.trace $(INCLUDE_DIRS) -iquote .
- $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS)
- @rm $@.trace
- $(C2) " CPPCHECK $(notdir $<)"
# TODO RTC 215692
# The following script is used to run the cppcheck tool when enabled. If one
# cppcheck error is found, the make process will stop here, the error will be
# printed out to the terminal and stored in a file .`basename $<`.cppcheck in
# the directory where the original file is located
- $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \
+ifdef DOCPPCHECK
+ CXX_PRINT=$(C2) " CPPCHECK $(notdir $<)"
+ # NoteL Error code 127 means that the command timed-out. We do not fail
+ # for timeouts
+ CXX_CPPCHECK_COMMAND=$(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \
if [ "$$exit_code" -ne 1 ]; then \
rm -f .`basename $<`.cppcheck; \
if [ "$$exit_code" -eq 127 ]; then \
-# Error code 127 means that the command timed-out. We do not fail for timeouts.\
exit_code=0; \
fi; \
fi; exit "$$exit_code"
+ C_CPPCHECK_COMMAND=$(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(C_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \
+ if [ "$$exit_code" -ne 1 ]; then \
+ rm -f .`basename $<`.cppcheck; \
+ if [ "$$exit_code" -eq 127 ]; then \
+ exit_code=0; \
+ fi; \
+ fi; exit "$$exit_code"
+else
+ CXX_PRINT=
+ CXX_CPPCHECK_COMMAND=
+ C_CPPCHECK_COMMAND=
+endif
+
+$(OBJDIR)/%.o : %.C
+ @mkdir -p $(OBJDIR)
+ $(C2) " CXX $(notdir $<)"
+ $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \
+ -o $@.trace $(INCLUDE_DIRS) -iquote .
+ $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS)
+ @rm $@.trace
+ $(CXX_PRINT)
+ $(CXX_CPPCHECK_COMMAND)
# Compiling *.cc files
$(OBJDIR)/%.o : %.cc
@@ -77,16 +94,8 @@ $(OBJDIR)/%.o : %.cc
$(INCLUDE_DIRS) -iquote .
$(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS)
@rm $@.trace
- $(C2) " CPPCHECK $(notdir $<)"
-# TODO RTC 215692
- $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \
- if [ "$$exit_code" -ne 1 ]; then \
- rm -f .`basename $<`.cppcheck; \
- if [ "$$exit_code" -eq 127 ]; then \
- exit_code=0; \
- fi; \
- fi; exit "$$exit_code"
-
+ $(CXX_PRINT)
+ $(CXX_CPPCHECK_COMMAND)
$(OBJDIR)/%.o : %.c
@mkdir -p $(OBJDIR)
@@ -96,28 +105,14 @@ ifndef CC_OVERRIDE
$(C2) " CC $(notdir $<)"
$(C1)$(CC) -c $(call FLAGS_FILTER, $(CFLAGS), $<) $(SOURCE_FILE) \
-o $@.trace $(INCLUDE_DIRS) -iquote .
- $(C2) " CPPCHECK $(notdir $<)"
-# TODO RTC 215692
- $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(C_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \
- if [ "$$exit_code" -ne 1 ]; then \
- rm -f .`basename $<`.cppcheck; \
- if [ "$$exit_code" -eq 127 ]; then \
- exit_code=0; \
- fi; \
- fi; exit "$$exit_code"
+ $(CXX_PRINT)
+ $(C_CPPCHECK_COMMAND)
else
$(C2) " CXX $(notdir $<)"
$(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \
-o $@.trace $(INCLUDE_DIRS) -iquote .
- $(C2) " CPPCHECK $(notdir $<)"
-# TODO RTC 215692
- $(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \
- if [ "$$exit_code" -ne 1 ]; then \
- rm -f .`basename $<`.cppcheck; \
- if [ "$$exit_code" -eq 127 ]; then \
- exit_code=0; \
- fi; \
- fi; exit "$$exit_code"
+ $(CXX_PRINT)
+ $(CXX_CPPCHECK_COMMAND)
endif
$(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS)
@rm $@.trace
OpenPOWER on IntegriCloud