[cfe-dev] improvements to scan-build

Anton Yartsev anton.yartsev at gmail.com
Mon Oct 27 13:30:53 PDT 2014


Hi all,

I'm thinking of the following improvements to scan-build and want to 
discuss them with the community and to hear your thoughts and opinions:

First of all, refactoring: keep all scan-build arguments in the hash 
rather then in scattered variables.
This will make the scan-build code easier to understand and make it 
easier to re-engineer the code in the future.

Then I intend to add a possibility for scan-build to read options from a 
simple INI-like (http://en.wikipedia.org/wiki/INI_file) configuration file.
Values (if any) from this file will override default hardcoded values 
but do not override those obtained from the command line.
The file may have separate sections for scan-build, ccc/c++-analyzer and 
environment variables (if needed).
This will concentrate all the analyzer settings in the single place and 
will allow users to easily observe the default values all-together and 
to customize scan-build invocations of their own will.

I also intend to add several additional options to scan-build:
1) Set of additional flags for ccc/c++-analyzer (e.g. additional include 
paths, defines, optimization options, e.t.c).
Often after 'configure' analysys with Clang ended up with different 
errors and I had to manually patch makefiles to transfer additional 
flags to Clang to make it work. It was a real headache.
Here is random example of how this additional flags looked like: '-g0 
-Os -fpermissive -D__STRICT_ANSI__ -I 
"F:/---OGRE/ogre_src_v1-8-1/include" -I 
"F:/---OGRE/ogre_src_v1-8-1/OgreMain/include"'...
So many times I wished to put extra flags somewhere so that 
ccc/c++-analyzer could take them and pass to Clang!
In configuration file it might look like the following:
CLANG_EXTRA_CXXFLAGS = -g0 -Os -fpermissive -D__STRICT_ANSI__ -I 
"F:/---OGRE/ogre_src_v1-8-1/include" -I 
"F:/---OGRE/ogre_src_v1-8-1/OgreMain/include"

2) If it happens so that both gcc and Clang are used after configuration 
then they share the same set of flags and the problem increases - Clang 
do not recognize some of gcc flags.
So I wish to add another option to scan-build, (e.g. 
CLANG_EXCLUDE_CXXFLAGS in config file) that will hold flags to be 
excluded from Clang invocation.

3) The third option is to add a possibility to completely bypass 
compilation step by gcc(g++, etc.) - this partially solves problems with 
options and, what is more important, may significantly reduce overall 
analisys time.

May I move forward with this?
Any thoughts and suggestions are welcome!

-- 
Anton




More information about the cfe-dev mailing list