[ovs-dev] [PATCH v4] Makefile.am: Add clang static analysis support

Lance Richardson lrichard at redhat.com
Tue Jul 5 16:53:28 UTC 2016


----- Original Message -----
> From: "Bhanuprakash Bodireddy" <bhanuprakash.bodireddy at intel.com>
> To: dev at openvswitch.org
> Cc: blp at ovn.org, lrichard at redhat.com, "Bhanuprakash Bodireddy" <bhanuprakash.bodireddy at intel.com>
> Sent: Tuesday, July 5, 2016 12:34:54 PM
> Subject: [PATCH v4] 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
> 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
> 
> 

Acked-By: Lance Richardson <lrichard at redhat.com>



More information about the dev mailing list