>-----Original Message----- >From: Ben Pfaff [mailto:b...@ovn.org] >Sent: Saturday, July 2, 2016 6:14 PM >To: Bodireddy, Bhanuprakash <bhanuprakash.bodire...@intel.com> >Cc: dev@openvswitch.org >Subject: Re: [ovs-dev] [PATCH v2] Makefile.am: Add clang static analysis >support > >On Tue, Jun 28, 2016 at 05:09:13PM +0100, Bhanuprakash Bodireddy wrote: >> 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 >> ./configure --with-dpdk(in case of DPDK datapath) 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>/ >> >> 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.bodire...@intel.com> > >I'd tend to write this a little differently, maybe like this: > >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- >analyzer=/usr/bin/clang $(MAKE) >.PHONY: clang-analyze
This is fine for me. > >But it doesn't work for me anyway. When I run it from a build tree configured >to use clang, I get the following: > > make all-recursive > make[2]: Entering directory '/home/blp/nicira/ovs/_clang' > Making all in datapath > make[3]: Entering directory '/home/blp/nicira/ovs/_clang/datapath' > make[4]: Entering directory '/home/blp/nicira/ovs/_clang/datapath' > make[4]: Leaving directory '/home/blp/nicira/ovs/_clang/datapath' > make[3]: Leaving directory '/home/blp/nicira/ovs/_clang/datapath' > make[3]: Entering directory '/home/blp/nicira/ovs/_clang' > CC lib/aes128.lo > gcc: error: unrecognized command line option '-Wthread-safety' > gcc: error: unrecognized command line option '-Qunused-arguments' > gcc: error: unrecognized command line option '-fno-caret-diagnostics' > Makefile:4179: recipe for target 'lib/aes128.lo' failed > make[3]: *** [lib/aes128.lo] Error 1 > make[3]: Leaving directory '/home/blp/nicira/ovs/_clang' > Makefile:4831: recipe for target 'all-recursive' failed > make[2]: *** [all-recursive] Error 1 > make[2]: Leaving directory '/home/blp/nicira/ovs/_clang' > Makefile:2749: recipe for target 'all' failed > make[1]: *** [all] Error 2 > make[1]: Leaving directory '/home/blp/nicira/ovs/_clang' > scan-build: Removing directory '/home/blp/nicira/ovs/tests/clang-analyzer- >results/2016-07-02-101251-14653-1' because it contains no reports. > scan-build: No bugs found. > Makefile:5845: recipe for target 'clang-analyze' failed > make: *** [clang-analyze] Error 1 > >Alternatively, if I run it from a build tree configured to use GCC, I get the >following: > > make all-recursive > make[2]: Entering directory '/home/blp/nicira/ovs/_build' > Making all in datapath > make[3]: Entering directory '/home/blp/nicira/ovs/_build/datapath' > make[4]: Entering directory '/home/blp/nicira/ovs/_build/datapath' > make[4]: Leaving directory '/home/blp/nicira/ovs/_build/datapath' > make[3]: Leaving directory '/home/blp/nicira/ovs/_build/datapath' > make[3]: Entering directory '/home/blp/nicira/ovs/_build' > CC lib/aes128.lo > CC lib/backtrace.lo > CC lib/bfd.lo > In file included from ../lib/bfd.h:24:0, > from ../lib/bfd.c:16: > ../lib/packets.h: In function 'eth_addr_invert': > ../lib/packets.h:237:5: error: 'for' loop initial declarations are only > allowed in >C99 or C11 mode > ../lib/packets.h:237:5: note: use option -std=c99, -std=gnu99, -std=c11 or > - >std=gnu11 to compile your code I have tested this on F22 and didn't see this issue. But when I tested it now on Ubuntu 14.04 LTS I could see the issue you reported here. Adding CFLAGS="-std=gnu99" to make should fix this issue and I tested it now on Ubuntu 14.04 Can you try the below patch and see if you can generate clang analysis report properly this time? +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-analyzer=/usr/bin/clang $(MAKE) CFLAGS="-std=gnu99" +.PHONY: clang-analyze Regards, Bhanu Prakash. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev