2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-21 14:49:41 +00:00

Makefile.am: Add clang static analysis support

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

Run 'scan-view <results dir>' command to examine the bug report.

Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodireddy@intel.com>
Acked-By: Lance Richardson <lrichard@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
Bhanuprakash Bodireddy
2016-07-15 19:43:24 +01:00
committed by Ben Pfaff
parent dde5ea7bd6
commit 30b79363b9
2 changed files with 29 additions and 0 deletions

View File

@@ -746,6 +746,28 @@ 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@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
You should invoke scan-view to view analysis results. The last line of output
from 'make clang-analyze' shall list the command (containing results directory)
that you should invoke to view the results on a browser.
Bug Reporting
=============

View File

@@ -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)