[ovs-dev] [PATCH v4] Makefile.am: Add clang static analysis support
Bhanuprakash Bodireddy
bhanuprakash.bodireddy at intel.com
Tue Jul 5 16:34:54 UTC 2016
Clang Static Analyzer is a source code analysis tool to find bugs. This
patch adds make target to trigger static analysis using below commands.
./boot.sh
For Clang: ./configure CC=clang --with-dpdk
For GCC: ./configure CC=gcc --with-dpdk CFLAGS="-std=gnu99"
make clang-analyze
scan-view --host=<ip address> --port <PORT>
$OVS_DIR>/clang-analyzer-results/yyyy-mm-dd-114251-1027-1>
--allow-all-hosts
Results can be viewed on browser: http://<ip address>:<PORT>/
v3->v4:
* Add "Static Code Analysis" to INSTALL.md
* Remove redundant --use-analyzer option
v2->v3:
* Refactor the code as suggested.
* Add --use-cc to scan-build.
v1->v2:
* Change the output directory to tests/clang-analyzer-results
* Remove '-j' make option, This might potentially hang some system
while spawning infinite jobs.
Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodireddy at intel.com>
---
INSTALL.md | 21 +++++++++++++++++++++
Makefile.am | 7 +++++++
2 files changed, 28 insertions(+)
diff --git a/INSTALL.md b/INSTALL.md
index f4d232b..c2a2021 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -746,6 +746,27 @@ Instructions to setup travis-ci for your GitHub repository:
4. Pushing a commit to the repository which breaks the build or the
testsuite will now trigger a email sent to mylist at mydomain.org
+Static Code Analysis
+--------------------
+
+Static Analysis is a method of debugging Software by examining code rather
+than actually executing it. This can be done through 'scan-build' commandline
+utility which internally uses clang (or) gcc to compile the code and also
+invokes a static analyzer to do the code analysis. At the end of the build, the
+reports are aggregated in to a common folder and can later be analyzed using
+'scan-view'.
+
+Open vSwitch includes a Makefile target to trigger static code Analysis and
+the instructions are below.
+
+1. ./boot.sh
+2. ./configure CC=clang (when using clang compiler)
+ ./configure CC=gcc CFLAGS="-std=gnu99" (when using GCC)
+3. make clang-analyze
+4. scan-view --host=IPADDR host --port PORT
+ $OVS_DIR>/clang-analyzer-results/yyyy-mm-dd-114251-1027-1 --allow-all-hosts
+5. Visit http://ipaddr:PORT/ for analysis report.
+
Bug Reporting
=============
diff --git a/Makefile.am b/Makefile.am
index b2c1126..7fcd672 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -401,6 +401,13 @@ ovsext_clean: datapath-windows/ovsext.sln
endif
.PHONY: ovsext
+clang-analyze: clean
+ @which clang scan-build >/dev/null 2>&1 || \
+ (echo "Unable to find clang/scan-build, Install clang,clang-analyzer packages"; exit 1)
+ @$(MKDIR_P) "$(srcdir)/tests/clang-analyzer-results"
+ @scan-build -o $(srcdir)/tests/clang-analyzer-results --use-cc=$(CC) $(MAKE)
+.PHONY: clang-analyze
+
dist-hook: $(DIST_HOOKS)
all-local: $(ALL_LOCAL)
clean-local: $(CLEAN_LOCAL)
--
2.4.11
More information about the dev
mailing list