summaryrefslogtreecommitdiffstats
path: root/src/build/mkrules/cc.rules.mk
diff options
context:
space:
mode:
authorMegan <megan.teo@ibm.com>2019-06-25 15:17:40 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-09-11 10:53:06 -0500
commit1d4530dac35a6baddf60a3bfd454aac1949f69b6 (patch)
tree5322e1e18208364078d0e0a5f54ecdf48402fe50 /src/build/mkrules/cc.rules.mk
parentbafe5de9d8b538d978d9955386b5f1fd0ae1d82b (diff)
downloadtalos-hostboot-1d4530dac35a6baddf60a3bfd454aac1949f69b6.tar.gz
talos-hostboot-1d4530dac35a6baddf60a3bfd454aac1949f69b6.zip
Implement Static Analysis with cppcheck
Cppcheck static analysis tool can now be run when compiling by running: make cppcheck And it will always run when committing without stopping the commit if an error is found. This commit suppresses some false positives found in the code. A false positive can be suppressed inline by placing “// cppcheck-suppress syntaxError” in a line before the false positive., e.g.: char arr[5]; // cppcheck-suppress arrayIndexOutOfBounds arr[10] = 0; Change-Id: I9e833a153d6b04df2f8a72cd994e43922c61c2fe RTC: 201451 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/79629 Reviewed-by: Zachary Clark <zach@ibm.com> Reviewed-by: Nicholas E Bofferding <bofferdn@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/build/mkrules/cc.rules.mk')
-rw-r--r--src/build/mkrules/cc.rules.mk41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/build/mkrules/cc.rules.mk b/src/build/mkrules/cc.rules.mk
index 584b11db4..2d465e2e3 100644
--- a/src/build/mkrules/cc.rules.mk
+++ b/src/build/mkrules/cc.rules.mk
@@ -54,6 +54,20 @@ $(OBJDIR)/%.o : %.C
-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=$$? ; \
+ 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"
# Compiling *.cc files
$(OBJDIR)/%.o : %.cc
@@ -63,6 +77,15 @@ $(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"
$(OBJDIR)/%.o : %.c
@@ -73,10 +96,28 @@ 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"
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"
endif
$(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS)
@rm $@.trace
OpenPOWER on IntegriCloud