Skip to content

Commit

Permalink
Makefile.am: Add clang static analysis support
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-By: Lance Richardson <[email protected]>
Signed-off-by: Ben Pfaff <[email protected]>
  • Loading branch information
Bhanuprakash Bodireddy authored and blp committed Jul 26, 2016
1 parent dde5ea7 commit 30b7936
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
22 changes: 22 additions & 0 deletions INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 [email protected]
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
=============
Expand Down
7 changes: 7 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 30b7936

Please sign in to comment.